我有一个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!
感谢您的帮助!
答案 0 :(得分:1)
如果要使用两个DbContext
类型和数据库初始化程序,则每个上下文必须使用自己的数据库。如果对两种上下文类型使用相同的数据库,则无法使用数据库初始化程序,并且必须手动维护数据库模式更改(在使用应用程序之前,必须手动或通过某些SQL脚本创建数据库和所有必需的表)。