c# – Entity Framework 6 DBContext,只包含所有表的子集
发布时间:2020-12-15 04:10:52 所属栏目:百科 来源:网络整理
导读:我们有一个包含770个表的庞大数据库,并希望使用EF 6.1x进行一些性能测试. 我们只想查询这770个表中的5个.是否可以创建一个只有5-6个实体/ DBSets的“轻”DBContext,而不是使用完整的770-tables-context? 当我们使用完整上下文时,一个包含4个连接的简单查询
我们有一个包含770个表的庞大数据库,并希望使用EF 6.1x进行一些性能测试.
我们只想查询这770个表中的5个.是否可以创建一个只有5-6个实体/ DBSets的“轻”DBContext,而不是使用完整的770-tables-context? 当我们使用完整上下文时,一个包含4个连接的简单查询需要45秒.那是44秒太长了. 问题: 由于用LINQ编写的查询只查询5个表,因此EF应该忽略其他765个表,但它不会. 注意:显然,可以在DB中创建一个视图,该视图使用LINQ查询执行我们在代码中所做的操作.问题是可以使用上面的“轻”DbContext来完成. 有上下文的“轻”版本: public class ItemLookupContext : DbContext { static ItemLookupContext() { Database.SetInitializer<ItemLookupContext>( null ); } public ItemLookupContext() : base( "Name=ItemLookupContext" ) { //Configuration.LazyLoadingEnabled = true; } public DbSet<Identity> Identities { get; set; } public DbSet<Item> Items { get; set; } public DbSet<Price> Prices { get; set; } public DbSet<Department> Departments { get; set; } public DbSet<Brand> Brands { get; set; } protected override void OnModelCreating( DbModelBuilder modelBuilder ) { modelBuilder.Configurations.Add( new IdentityMap() ); modelBuilder.Configurations.Add( new ItemMap() ); modelBuilder.Configurations.Add( new PriceMap() ); modelBuilder.Configurations.Add( new DepartmentMap() ); modelBuilder.Configurations.Add( new BrandMap() ); //ignore certain entitities to speed up loading? //does not work modelBuilder.Ignore<...>(); modelBuilder.Ignore<...>(); modelBuilder.Ignore<...>(); modelBuilder.Ignore<...>(); modelBuilder.Ignore<...>(); } } 解决方法
你尝试过像“Bounded Context”这样的东西,这是DDD模式之一
所以,您可以查看Julie Lerman,Shrink EF Models with DDD Bounded Contexts的这篇文章 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |