gpt4 book ai didi

entity-framework - 英孚核心 : is it possible to support two models in one database?

转载 作者:行者123 更新时间:2023-12-05 04:05:27 26 4
gpt4 key购买 nike

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

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

最佳答案

是的,您可以在同一个数据库中拥有多个上下文。 I've put together a sample showing three contexts in the same database .您像往常一样声明三个上下文,并且在您设置迁移时差异会显现出来;您只需要在此处更加明确,命名您正在迁移或更新的上下文,并且明确说明迁移的去向也是一个好主意。

这是上面链接的示例项目的 Program.Main,显示了三个用于依赖注入(inject)的上下文的基本添加,然后对每个上下文进行“填充”。有关其余文件,请参阅 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 数据库更新 --context AnimalContext

关于entity-framework - 英孚核心 : is it possible to support two models in one database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51104369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com