相关疑难解决方法(0)

EF 4.3在一个数据库中使用多个DbContexts进行自动迁移

我正在尝试使用多个代码优先的DbContexts进行EF 4.3迁移.我的应用程序被分成几个插件,这些插件可能有关于其域的自己的DbContext.应用程序应该使用一个单独的sql-database.

当我尝试在空数据库中自动迁移上下文时,这仅对第一个上下文成功.每个其他上下文都需要将AutomaticMigrationDataLossAllowed-Property设置为true,然后尝试删除前一个的表.

所以我的问题是:

  • 如何判断迁移配置只是为了管理在相应上下文中定义的表并将所有其他表保留一个?
  • 在单个数据库中使用自动迁移处理多个DbContexts的正确工作流程是什么?

谢谢!

entity-framework-4 ef-migrations

21
推荐指数
2
解决办法
1万
查看次数

实体框架6 DBContext只包含所有表的子集

我们有一个包含770个表的庞大数据库,并希望使用EF 6.1x进行一些性能测试.

我们只想查询这770个表中的5个.是否可以创建一个只有5-6个实体/ DBSets的"轻"DBContext,而不是使用完整的770-tables-context?

当我们使用完整上下文时,一个包含4个连接的简单查询需要45秒.那是44秒太长了.我们正在使用代码优先(逆向工程).

问题: 当我们创建完整上下文的这种"轻型"版本(即仅5个表)时,EF抱怨所有与这5个表有某种关联的所有其他实体都缺少密钥.我们只映射这5个表的键,属性,关系,而不是其余的.

由于用LINQ编写的查询只查询5个表,因此EF应该忽略其他765个表,但它不会. 为什么不?LazyLoading = true/false似乎与此无关.

注意:显然,可以在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 …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server entity-framework dbcontext

6
推荐指数
1
解决办法
5811
查看次数