为什么删除迁移运行我的应用程序?

2023-11-21

我在过去几个月进行了一些版本升级,现在我注意到当我使用“remove-migration”删除我恢复的迁移时,它首先运行我的应用程序。

(我注意到,因为我们在启动内更新数据库,所以我遇到了无法删除迁移的情况,因为每次我尝试删除迁移时 - 它都会自动运行将迁移应用到数据库的启动,然后删除失败它,因为它在数据库中看到它。)

任何想法?


ASP.NET Core 2.1 更新

在 ASP.NET Core 2.1 中,方法略有变化。总体方法与2.0类似,只是方法名称和返回类型发生了变化。

public static void Main(string[] args)
{
    CreateWebHostBuilder(args)
        .Build()
        .Migrate();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
    return new WebHostBuilder()
        ...; // Do not call .Build() here
}

ASP.NET 核心 2.0

如果您使用的是 ASP.NET Core 2.0/EF Core 2.0,则进行了更改以更好地涵盖此类情况,以便命令行工具可以更好地工作。

它很好地覆盖了本公告.

归结为有一个静电BuildWebHost配置整个应用程序但不运行它的方法。

  public class Program
  {
      public static void Main(string[] args)
      {
          var host = BuildWebHost(args);

          host.Run();
      }

      // Tools will use this to get application services
      public static IWebHost BuildWebHost(string[] args) =>
          new WebHostBuilder()
              .UseKestrel()
              .UseContentRoot(Directory.GetCurrentDirectory())
              .UseIISIntegration()
              .UseStartup<Startup>()
              .Build();
  }

此外,对于 EF 2.0,现在建议将迁移移至主方法BuildWebHost已被调用。例如

    public static void Main(string[] args)
    {
        var host = BuildWebHost(args)
            .Migrate();

        host.Run();
    }

Where Migrate是一个扩展方法:

public static IWebHost Migrate(this IWebHost webhost)
{
    using (var scope = webhost.Services.GetService<IServiceScopeFactory>().CreateScope())
    {
        using (var dbContext = scope.ServiceProvider.GetRequiredService<MyDbContext>()) 
        {
            dbContext.Database.Migrate();
        }
    }
    return webhost;
}

现在,迁移仅在执行应用程序时运行。当您运行命令行工具时,仅BuildWebHost将被调用并且不会应用任何迁移。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么删除迁移运行我的应用程序? 的相关文章

随机推荐

  • 通过关联查找activerecord

    我正在尝试从我的数据库检索 activerecord 对象 我的模型是 class User lt ActiveRecord Base belongs to account has many domains through gt accou
  • 在 LINQ 中创建批处理

    有人可以建议一种在 LINQ 中创建特定大小的批次的方法吗 理想情况下 我希望能够以一些可配置数量的块执行操作 您不需要编写任何代码 使用MoreLINQ批处理方法 将源序列分批放入指定大小的存储桶中 MoreLINQ 作为可以安装的 Nu
  • 设置自定义文件夹 Android 下载管理器

    我有一个关于下载管理器的问题 我要从网站下载文件 当我设置默认下载目录 Environment DIRECTORY DOWNLOAD 时 一切正常并且我的下载开始 但如果我尝试更改目录 我的应用程序不会下载该文件 特别是 我希望我的文件进入
  • 如何在 create-react-app 项目中重命名index.html?

    我正在使用 Surge 托管我的 create react app 网站 为了使用客户端路由 您需要将入口点设置为200 html但是当使用 create react app 时它默认设置为index html 在不破坏网站的情况下重命名该
  • Laravel 批量更新

    我正在尝试更新包含每个记录的随机段值的表 vouchers Voucher gt get assume 10K for example foreach vouchers as voucher q UPDATE vouchers set sl
  • 如何使用 pyspark 将字段从 double 转换为 float 并对其进行舍入

    我有两个数据框 其架构如下 books with 10 ratings or more with title root ISBN string nullable true count long nullable false average
  • iCloud:我可以忽略那些禁用 iCloud 的人吗?

    我对 iCloud 的想法有点挣扎 并发布了一个更普遍的问题here 我最大的问题是决定是否应该停止将用户数据放入应用程序沙箱中的旧文档文件夹中 为了说明我的问题 The docs据我所知 不要给出答案 假设我有一个处理不同 txt 文件的
  • 变量值是否改变

    如何在 javascript 中查找变量的值是否更改 Ehm var testVariable 10 var oldVar testVariable if oldVar testVariable alert testVariable has
  • 如何将 CSV 文件导入 Firebase

    我看到我们可以将 json 文件导入到 firebase 中 我想知道是否有办法导入 CSV 文件 我的文件可能包含大约 50K 甚至更多记录 大约 10 列 在 firebase 中拥有这样的文件是否有意义 我无法回答在 Firebase
  • python-ldap OS X 10.6 和 Python 2.6

    尝试为我的 Django 项目安装 python ldap 到目前为止尝试过 easy install pip 以及自己构建 但仍然遇到相同的错误 dlopen Library Python 2 6 site packages ldap s
  • 让 Gii 在 Yii 2.0 上工作

    我下载了高级模板 将其解压并更改了后端和前端的根文档 但我似乎不知道如何让 Gii 执行增删改查操作 Composer JSON 中有 require 和 require dev 字段 我在它们两个中都包含了 gii 并且分别在每个字段中包
  • 始终允许本机数据库查询

    在 Excel 2013 中 如何更改选项 或者是否可能 以始终允许本机数据库查询 有人可以指导我如何设置吗 我还没有足够高的声誉来对 user2676140 的答案发表评论 但为了防止有人来到这个线程寻求 Excel 我可以利用它2016
  • 如何在C中将数组拆分为两个数组

    假设我有一个 C 数组 int array 6 1 2 3 4 5 6 我怎么能把它分成 1 2 3 and 4 5 6 使用 memcpy 可以吗 谢谢你 nonono 当然 最简单的解决方案是使用分配两个新数组malloc然后使用mem
  • JUnit TestCase 对象实例化

    是一个新的 或不同的 实例TestCase对象用于运行 JUnit 测试用例中的每个测试方法 或者所有测试都重复使用一个实例 public class MyTest extends TestCase public void testSome
  • 为什么 Eclipse 3.2 在启动时抛出错误

    我有一台 Windows 32 位计算机 刚刚下载了 Eclipse 3 2 SDK 但无法启动 它立即将以下错误抛出到日志文件中 我尝试用 java 1 5 VM 启动它 但仍然没有任何运气 有任何想法吗 谢谢 SESSION 2012
  • 使用 SSHTunnelForwarder 通过 SSH 连接到 MySQL 数据库

    我正在尝试在 python 中通过 ssh 连接到 mysql 数据库 但出现错误 我将以下内容保存在 python 文件 forward py 中 我的代码如下 转发 py from sshtunnel import SSHTunnelF
  • android:创建滚动时折叠的布局

    I need a layout view1 which on scrolling listview gets collapsed so that listview have full screen height 根据您的要求使用折叠工具栏布
  • 解决 bash 脚本中的 sys.excepthook 错误

    我编写了一个 bash 脚本 它完全按照我想要的方式执行 但排除了以下错误 close failed in file object destructor sys excepthook is missing lost sys stderr 我
  • 是否可以使用 javaagent 运行 Play Framework 2.0 服务器?

    我希望能够使用 javaagent 运行 Play Framework 2 0 服务器 网络上的一些资源 参见here and here 建议这可以简单地通过附加来完成 javaagent path to agent jar to play
  • 为什么删除迁移运行我的应用程序?

    我在过去几个月进行了一些版本升级 现在我注意到当我使用 remove migration 删除我恢复的迁移时 它首先运行我的应用程序 我注意到 因为我们在启动内更新数据库 所以我遇到了无法删除迁移的情况 因为每次我尝试删除迁移时 它都会自动