gpt4 book ai didi

asp.net-core - 在 Entity Framework 中使用两个不同的连接字符串进行迁移

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

我有 一个 DbContext和两个数据库,一个用于调试/开发(本地),一个用于生产(在线)。我用 appsetting.Development.json 切换它们和 appsettings.Production.json文件。
两者都看起来像这样:

{
"ConnectionStrings": {
"Default": "Server={myServer};Persist Security Info=False;User ID={MyUser};Password={myPassword};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
}
因此,当我处理代码并启动它时,它使用 localDb,当我发布它时,它使用另一个数据库。
现在,当我更改模型中的某些内容时,我总是要删除迁移文件,然后执行
dotnet ef migrations add InitialModel
进而
dotnet ef database update
之后再次删除迁移文件,更改 appsettings.Development.json进入我的在线数据库并再次执行命令。
所以这是我的问题:
  • 有没有办法选择迁移命令中应该使用的配置?
    像:
     dotnet ef migrations add InitialModel --config Production
  • 有没有办法将迁移文件与两个数据库一起使用,这样我就不必总是删除迁移文件?
  • 最佳答案

    我不确定是否有一个迁移命令可以让您选择配置,因为连接字符串已添加到 Startup.cs 文件中。但是,我可以分享我是如何做到的,你看看它是否适合你。通常,我会在 appsettings.json 文件中有两个连接字符串。像这样的东西"ConnectionStrings": {"DevConnection": "Data source=databasename.db","ProdConnection":"Data source=databasename.db"},Startup.cs文件,我在依赖注入(inject)容器中指定连接字符串。在我的 Program.cs文件,我有这个

            var host = CreateHostBuilder(args).Build();
    using(var scope = host.Services.CreateScope())
    {
    var services = scope.ServiceProvider;
    try
    {
    var context = services.GetRequiredService<DataContext>();
    var userManager = services.GetRequiredService<UserManager<AppUser>>(); //if you have users in your seed data
    context.Database.Migrate();
    Seed.SeedData(context, userManager).Wait(); //If you have seed data with test users

    }
    catch(Exception ex)
    {
    var logger = services.GetRequiredService<ILogger<Program>>();
    logger.LogError(ex, "An error occurred during migration");
    }
    }
    host.Run();
    这段代码确保您不需要运行更新数据库命令。您只需创建迁移并启动应用程序。
    你只需要在开发之后,在依赖注入(inject)容器中切换连接字符串。切换连接字符串时无需运行更新数据库命令。您还可以使用环境变量。你可以看看它,看看它是如何工作的。

    关于asp.net-core - 在 Entity Framework 中使用两个不同的连接字符串进行迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63420432/

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