EF CORE:是否可以在一个数据库中支持两个模型?



是否可以在一个数据库中支持具有所有"迁移功能"的两个不同的 EF Core 模型?

我想我应该以某种方式将dbo分开._EFMigrationsHistory? 在文档中找不到此类选项。

是的,您可以在同一数据库中拥有多个上下文。 我整理了一个示例,显示了同一数据库中的三个上下文。 您可以像往常一样声明三个上下文,并且在设置迁移时会表现出差异;您只需要在此处更明确地命名要迁移或更新的上下文,并且最好明确

迁移的方向。这是上面链接的示例项目的 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

最新更新