我在迁移和更新数据库时遇到了一些问题,所以我删除了整个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
,所以这没有解决我的问题。
我怎样才能继续使用我的数据库,使用我的当前数据,同时仍然能够更新它?
2条答案
按热度按时间dgsult0t1#
有多种方法可以实现这一点。例如,在添加新的初始迁移后,手动添加当前迁移的ID(检查在
{MigrationName}.Designer.cs
文件中传递给MigrationAttribute
的值,通常它与迁移名称匹配)添加到要保留的所有数据库中的__EFMigrationsHistory
表(您可以选择在插入新迁移名称之前删除其中的所有记录)。阅读详情:
6uxekuva2#
现记录如下:
也可以重置所有迁移并创建一个迁移而不丢失数据。这有时称为“压缩”,需要一些手动操作:
Managing Migrations - EF Core