我有一个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脚本创建数据库和所有必要的表)。