迁移 EF Core 数据表

4

我正在使用 dotnetcore 2.0。当对 Model 进行更改时,我需要知道如何以编程方式进行 migrate。模型的更改可以是添加新列、编辑列、删除列或表。

由于 EF Core 不支持像 EF 6 中那样的自动迁移,有人可以建议一种新的方法来解决这个问题吗?


你需要从efcore工具中运行迁移,有两种不同的语法,参见此答案,只需将相同的概念应用于你的customContext即可。 - johnny 5
我想通过编写代码来完成,而不是通过输入命令。@johnny5 - Illep
抱歉,我没有读到那部分。看看我的答案,应该能让你找对方向。 - johnny 5
1个回答

2

您也可以使用此功能用于数据种子,但迁移也会运行。

public static void Migrate(IServiceProvider serviceProvider)
{

    using (var scope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope())
    {
         //replace with your dbContext
         var context = scope.ServiceProvider.GetRequiredService<ConfigurationDbContext>();
        context.Database.Migrate();
    }
}

然后从您的程序主要部分开始
public static void Main(string[] args)
{

    var host = BuildWebHost(args);

    Migrate(host.Services);
    host.Run();
}

一旦完成,我相信它会使用EF模型在您的数据库上运行迁移。


请问这里发生了什么? - Illep
基本上,当您传递种子参数时,它将首先运行迁移,您还可以使用它来填充数据库中的一些默认值。 - johnny 5
我需要种子部分才能进行迁移吗?我的意思是Main函数中的代码。 - Illep
我认为你仍然需要更新迁移脚本以使每个更改生效,不太确定如何做到这一点,也许可以添加预构建过程。 - johnny 5
不太确定如何添加预构建脚本来调用Dotnet ef migrations update,只更新您的上下文? - johnny 5
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接