oracle EF Core -删除迁移文件夹,但保留数据库?

c7rzv4ha  于 2023-03-17  发布在  Oracle
关注(0)|答案(2)|浏览(118)

我在迁移和更新数据库时遇到了一些问题,所以我删除了整个Migrations文件夹。
现在我想更新数据库而不删除数据。
问题是,当我现在进行新的迁移时,它将使用Create语句在其中包含所有已存在的表/类。当我尝试更新数据库时,我得到一个错误,即表已存在(ORA-00955)。
我发现:https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/managing?tabs=dotnet-core-cli,但是当我创建脚本时,它仍然只有CREATE而不是CREATE IF NOT EXISTS,所以这没有解决我的问题。
我怎样才能继续使用我的数据库,使用我的当前数据,同时仍然能够更新它?

dgsult0t

dgsult0t1#

有多种方法可以实现这一点。例如,在添加新的初始迁移后,手动添加当前迁移的ID(检查在{MigrationName}.Designer.cs文件中传递给MigrationAttribute的值,通常它与迁移名称匹配)添加到要保留的所有数据库中的__EFMigrationsHistory表(您可以选择在插入新迁移名称之前删除其中的所有记录)。
阅读详情:

6uxekuva

6uxekuva2#

现记录如下:
也可以重置所有迁移并创建一个迁移而不丢失数据。这有时称为“压缩”,需要一些手动操作:

  • 删除迁移文件夹
  • 创建新迁移并为其生成SQL脚本
  • 在数据库中,删除迁移历史记录表中的所有行
  • 在迁移历史记录中插入一行,以记录第一个迁移已经应用,因为您的表已经存在。插入SQL是上面生成的SQL脚本中的最后一个操作。

Managing Migrations - EF Core

相关问题