【问题标题】:Are we supposed to delete migration snapshot when migrating db to .NET Core 2将 db 迁移到 .NET Core 2 时,我们是否应该删除迁移快照
【发布时间】:2018-09-30 12:28:54
【问题描述】:

如果我们的 .NET Core 1 项目中有现有的数据库迁移和快照文件,我们是否应该在进行新的迁移之前删除 .Net Core 2 中的快照?

编辑:

我注意到带有新迁移的快照文件有一个

.HasAnnotation("ProductVersion", "2.0.0-rtm-26452") 我之前的迁移是:

.HasAnnotation("ProductVersion", "1.1.2")

它 ef core 只是因为版本不同而跳过了我的旧迁移文件?因为我用所有以前的迁移调查了我的新迁移文件,它看起来对那些以前的迁移一无所知。

【问题讨论】:

  • ef 核心版本有哪些?
  • 如果您有一个现有的数据库,重新创建一个新的迁移意味着您将无法从当前阶段更新您现有的数据库
  • @NevilleNazerane 我之前的版本是 ef core 1.1.2,现在我使用的是 2.0。我不太关注你(对不起,我是 sql/.net 的新手)。但是您是说我无法在移植的应用程序中使用来自 ef core 1.1.2 的数据吗?

标签: asp.net-identity asp.net-core-2.0 asp.net-core-1.1


【解决方案1】:

您不需要在迁移时删除任何内容,因为框架足够智能,可以知道您在做什么。只需确保在升级项目时执行以下操作。

  1. 将所有包引用更新到新的 2.x 版本
  2. 将所有工具引用更新到新的 2.x 版本

如果您这样做,您应该能够在更新项目后添加新的迁移而不会出现任何问题。

【讨论】:

  • 如果在第一个迁移文件(在版本 1 期间生成)上运行 dotnet ef database update 失败,这通常意味着什么?我还擦除了我的数据库以测试在新环境中会发生什么,但它似乎也失败了。
  • 应该有一条关于为什么失败的消息,你能分享一下吗?
  • 是的,我现在得到一个:“无法删除索引'AspNetUsers.UserNameIndex',因为它不存在或者您没有权限。我这次也看到了 userNameIndex。它使用了以前不存在,但现在确实存在。如果您需要其他信息,我也在这里发了一个帖子:github.com/aspnet/EntityFrameworkCore/issues/11763
猜你喜欢
  • 2022-11-17
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 2011-05-02
相关资源
最近更新 更多