EF CORE:是否可以在一个数据库中支持两种模型?
EF CORE: is it possible to support two models in one database?
是否可以在一个数据库中支持所有 "migrations functionality" 的两种不同的 EF Core 模型?
我想我应该以某种方式分开 dbo
._EFMigrationsHistory
?
在文档中找不到这样的选项。
是的,您可以在同一数据库中拥有多个上下文。 I've put together a sample showing three contexts in the same database。您像往常一样声明三个上下文,并且在您设置迁移时差异会显现出来;你只需要在这里更明确一点,命名你正在迁移或更新的上下文,并且明确说明迁移的去向是个好主意。
这是上面链接的示例项目的 Program.Main,显示了三个依赖注入上下文的基本添加,然后对每个执行 "stuff"。有关其余文件,请参阅 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 commands/flags 略有不同):
迁移:
dotnet ef migrations add CreateAnimalsSchema --context AnimalContext -o Data/Migrations/Animals
数据库更新:
dotnet ef database update --context AnimalContext
是否可以在一个数据库中支持所有 "migrations functionality" 的两种不同的 EF Core 模型?
我想我应该以某种方式分开 dbo
._EFMigrationsHistory
?
在文档中找不到这样的选项。
是的,您可以在同一数据库中拥有多个上下文。 I've put together a sample showing three contexts in the same database。您像往常一样声明三个上下文,并且在您设置迁移时差异会显现出来;你只需要在这里更明确一点,命名你正在迁移或更新的上下文,并且明确说明迁移的去向是个好主意。
这是上面链接的示例项目的 Program.Main,显示了三个依赖注入上下文的基本添加,然后对每个执行 "stuff"。有关其余文件,请参阅 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 commands/flags 略有不同):
迁移:
dotnet ef migrations add CreateAnimalsSchema --context AnimalContext -o Data/Migrations/Animals
数据库更新:
dotnet ef database update --context AnimalContext