gpt4 book ai didi

c# - 如何在项目开始时执行迁移

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:46 25 4
gpt4 key购买 nike

我希望在 start.cs 文件中执行迁移命令。因此,当应用程序首次运行时,它会查找数据库,如果不存在,则会运行迁移脚本。

我知道您可以使用“dotnet 迁移”在程序包管理器控制台中执行此操作,但我希望通过代码执行此操作。

谢谢!


更新

看起来这对我有用

  • 在我的 Startup.cs 文件中,在 Startup 构造方法中。

       using (
    var context = new PeopleContext(
    _config,
    new Microsoft.EntityFrameworkCore.DbContextOptions<PeopleContext>()
    ))
    {
    context.Database.EnsureCreated();
    }
  • 我在这里使用“using”语句来确保我的 DbContext 在我完成使用后关闭。

  • 在我创建我的上下文之后,我会调用它的方法来确保数据库存在,如果不存在,我会添加数据库并运行迁移。

我正在使用 ASP.NET Core:NETStandard,Version=v1.6

几乎是截至 2016 年 9 月 1 日的最新佳作


更新2

看起来使用 .Migrate() 方法可能是可行的方法。

备注*

要使用 .Migrate(),您需要添加

using Microsoft.EntityFrameworkCore;

这是我现在使用的。

        using (var context = new PeopleContext(_config,new Microsoft.EntityFrameworkCore.DbContextOptions<PeopleContext>()))
{
try
{
context.Person.Any();
}
catch (Exception ex)
{
//context.Database.EnsureCreated();
context.Database.Migrate();
}

}

最佳答案

要在 .Net Core 的应用程序启动时运行 EF7 迁移,我有:

在 ConfigureServices() 中

using (var dataContext = (DataContext)app.ApplicationServices.GetService(typeof(DataContext)))
{
dataContext.Database.Migrate();
}

这会在启动时运行新的迁移。

我不确定 EnsureCreated 是否会在初始表创建后运行新的迁移?参见:http://thedatafarm.com/data-access/ef7-ensurecreated-vs-migrate-methods/

关于c# - 如何在项目开始时执行迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39282534/

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