EF Code First能否在一个应用程序中再包含两个DBContext



我有一个ASP.NET MVC应用程序,它使用EF代码首先,出于某种原因,我需要为我的应用程序使用2个不同的DBContext,如下面的示例:

namespace ESN.Models
{
    public class CoreA
    {
        //..........
    }
    public class CoreB
    {
        //..........
    }
    public class CoreDbContext : DbContext
    {
        public DbSet<CoreA> CoreA { get; set; }
        public DbSet<CoreB> CoreB { get; set; }
    }
    public class StuffA
    {
        //..........
    }
    public class StuffB
    {
        //..........
    }
    public class StuffDbContext : DbContext
    {
        public DbSet<StuffA> StuffA { get; set; }
        public DbSet<StuffB> StuffB { get; set; }
    }
}

为了方便开发,我添加了一些代码,如果模型发生变化,可以删除并重新创建数据库:

    Database.SetInitializer<CoreDbContext>(new DropCreateDatabaseIfModelChanges<CoreDbContext>());
    Database.SetInitializer<StuffDbContext>(new DropCreateDatabaseIfModelChanges<StuffDbContext>());

但问题是,他们只是为我需要首先使用的DbContent创建新表,Core表存在,但没有Stuff!

谢谢你的帮助!

如果要使用两个DbContext类型和数据库初始化程序,则每个上下文都必须使用自己的数据库。如果两种上下文类型都使用相同的数据库,则不能使用数据库初始化程序,并且必须手动维护数据库架构更改(在使用应用程序之前,必须手动或通过某些SQL脚本创建数据库和所有必要的表)。

相关内容

最新更新