是否可以在一个数据库中支持具有所有“迁移功能”的两种不同的EF Core模型?
我想我应该以某种方式分隔dbo
。_EFMigrationsHistory
吗?
在文档中找不到此类选项。
答案 0 :(得分:2)
是的,您可以在同一数据库中拥有多个上下文。 I've put together a sample showing three contexts in the same database。您通常会声明三个上下文,并且在设置迁移时它们之间的差异就很明显。您只需要在此处更明确地命名,为要迁移或更新的上下文命名,同时也要明确迁移的方向是一个好主意。
这是上面链接的示例项目的Program.Main,它显示了三个用于依赖项注入的基本添加,然后分别对它们进行“填充”。有关其余文件,请参见Github上的回购。
class Program
{
static async Task Main(string[] args)
{
var providers = new ServiceCollection()
.AddDbContext<AnimalContext>(options => options.UseSqlServer(Globals.CONNECTIONSTRING))
.AddDbContext<DoctorContext>(options => options.UseSqlServer(Globals.CONNECTIONSTRING))
.AddDbContext<CarContext>(options => options.UseSqlServer(Globals.CONNECTIONSTRING))
.BuildServiceProvider();
var animalContext = providers.GetService<AnimalContext>();
await AnimalHelpers.Seed(animalContext);
await AnimalHelpers.Read(animalContext);
var carContext = providers.GetService<CarContext>();
await CarHelpers.Seed(carContext);
await CarHelpers.Read(carContext);
var doctorContext = providers.GetService<DoctorContext>();
await DoctorHelpers.Seed(doctorContext);
await DoctorHelpers.Read(doctorContext);
Console.ReadKey();
}
}
要初始化数据库,我为每个上下文运行了一个迁移,然后为每个上下文运行了更新数据库,如下所示(在powershell中; PMC命令/标志略有不同):
dotnet ef migrations add CreateAnimalsSchema --context AnimalContext -o Data/Migrations/Animals
dotnet ef database update --context AnimalContext