草庐IT

c# - 如何根据 XUnit 测试隔离 EF InMemory 数据库

我正在尝试使用InMemoryEF7数据库进行我的xunit存储库测试。但我的问题是,当我尝试处置创建的上下文时,内存中的数据库仍然存在。这意味着一个测试涉及另一个。我读过这篇文章UnitTestingEntityFramework7withtheInMemoryDataStore并且我尝试在我的TestClass的构造函数中设置上下文。但这种方法行不通。当我单独运行测试时,一切正常,但我的第一个测试方法将一些东西添加到数据库中,第二个测试方法从以前的测试方法中的脏数据库开始。我尝试将IDispose添加到测试类中,但方法DatabaseContext和DB仍然存在于内存中。我做错了什

c# - 模拟 DbContext.set<T>.Add() EF6

我有以下类(其中PilsnerContext是DbContext类):publicabstractclassServiceBase:IServicewhereT:class,IEntity{protectedreadonlyPilsnerContextContext;protectedServiceBase(PilsnerContextcontext){Context=context;}publicvirtualTAdd(Tentity){varnewEntity=Context.Set().Add(entity);Context.SaveChanges();returnnewEnti

c# - EF6 Code First 具有通用存储库和依赖注入(inject)和 SoC

经过大量阅读和尝试后EntityFramework最新的稳定版本(6.1.1)。我正在阅读很多关于是否使用EF6的存储库的矛盾。或EF一般来说,因为它是DbContext已经提供了一个存储库和DbSetUoW,盒子外面。让我首先解释我的解决方案在项目方面包含的内容,然后我将回到矛盾。它有一个类库项目,还有一个asp.net-mvc项目。类lib项目是数据访问,其中Migrations为CodeFirst启用.在我的类lib项目中,我有一个通用存储库:publicinterfaceIRepositorywhereTEntity:class{IEnumerableGet();TEntity

c# - 如何首先使用 EF 代码在 .SaveChanges() 期间记录所有实体更改?

我正在使用EF代码优先。我正在为我的所有存储库使用一个基础存储库,并使用一个注入(inject)存储库的IUnitofWork:publicinterfaceIUnitOfWork:IDisposable{IDbSetSet()whereTEntity:class;intSaveChanges();}publicclassBaseRepositorywhereT:class{protectedreadonlyDbContext_dbContext;protectedreadonlyIDbSet_dbSet;publicBaseRepository(IUnitOfWorkuow){_db

c# - "using"语句的EF( Entity Framework )用法

我有一个关于MVC的项目。我们为我们的数据库事务选择了EF。我们为BLL层创建了一些管理器。我发现了很多示例,其中使用了“using”语句,即publicItemGetItem(longitemId){using(vardb=newMyEntities()){returndb.Items.Where(it=>it.ItemId==itemId&&!it.IsDeleted).FirstOrDefault();}}这里我们创建了一个新的DBcontextMyEntities()实例。我们使用“using”来"ensurethecorrectuseofIDisposableobjects.

c# - 枚举 EF 5.0 - 数据库优先

如果我使用数据库优先,我如何才能让我的上下文对象使用EntityFramework5.0中的枚举功能。 最佳答案 转到模型浏览器并创建一个新的枚举类型,然后转到您希望使用它的任何列并将其类型更改为您刚刚创建的枚举。 关于c#-枚举EF5.0-数据库优先,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/11595008/

c# - 如何在 EF-Code-First 中指定主键名称

我正在使用EntityFrameworkCodefirst创建我的数据库。当我通过ODBC连接到它时,具有模式名称dbo.pk_Jobs的默认主键似乎会扰乱访问2007。如果我手动编辑名称并删除架构名称并将此主键重命名为pk_jobs,Access现在可以读取该表。我可以使用FluentApi、数据属性或任何其他方法指定主键名称以不包括架构名称吗?publicclassReportsContext:DbContext{publicDbSetJobs{get;set;}protectedoverridevoidOnModelCreating(DbModelBuildermodelBuil

c# - EF 6 与 EF 5 部署到 IIS8 时的相对性能问题

我有一个带有EF6的MVC4应用程序。从EF5升级到EF6后,我注意到我的一个linq-entities查询存在性能问题。起初我很兴奋,因为在我的开发箱上我注意到从EF5到EF6有50%的改进。这个查询返回大约73,000条记录。在生产服务器上运行的SQL被ActivityMonitor、RecentExpensiveQueries截获,此时间也包含在下表中。以下数字是数据库预热后的数字:开发:64位操作系统、SS2012、2核、6GBRAM、IISExpress。EF5~30secEF6~15secSQL~26sec生产:64位操作系统、SS2012、32核、32GBRAM、IIS8

c# - EF 6.X 中的 Entity Framework Code First Fluent API 默认值

如何使用EntityFrameworkCodeFirstFluentAPI为bool属性设置默认值?类似于:Property(l=>l.PropertyFlag).HasColumnType("bit").DefaultValue(1); 最佳答案 好消息,codefirst现在支持这个。在生成的迁移的“Up()”方法中,使用以下语法指定默认值:AddColumn("[tablename]","[columnname]",c=>c.Boolean(nullable:false,defaultValue:false));MSDNfor

c# - EF Code First 阻止使用 Fluent API 进行属性映射

我有一个类Product和一个复杂类型AddressDetailspublicclassProduct{publicGuidId{get;set;}publicAddressDetailsAddressDetails{get;set;}}publicclassAddressDetails{publicstringCity{get;set;}publicstringCountry{get;set;}//otherproperties}是否可以防止从Product类中的AddressDetails映射“Country”属性?(因为我永远不需要它用于Product类)像这样Property(