我是EF的新手,只是有关已应用迁移的删除/删除的问题。
我一直认为删除应用的迁移原因会导致数据库不同步,但是我发现它也会自动修改数据库。下面是我的代码:
首先,我有一个Product类:
public class Product
{
public string Name { get; set; }
public string Category { get; set; }
}
然后我创建了一个初始迁移并进行了更新
dotnet ef迁移添加初始
dotnet ef数据库更新
然后我将一个新属性InStock
添加到Product类,然后发出命令
dotnet ef迁移添加AddInStock
dotnet ef数据库更新
然后我尝试通过以下方式删除此应用的迁移
dotnet ef迁移删除--force
CLI窗口显示日志消息,我看到Alter Table[Product] Drop Column [InStock]
,这意味着“ InStock”列已被删除。
如果是这种情况,为什么我总是听到“删除已应用的迁移将导致数据库不同步问题”?就我而言,数据库是通过删除应用的迁移来进行更新的,它始终与项目保持同步。
另一个问题是,上面的代码来自一本教科书,我遵循它进行学习,该教科书说发出强制解除命令时,将出现以下记录消息:
Removing migration '<timestamp>_AddInStock' without checking the database. If this
migration has been applied to the database, you will need to manually reverse the changes
it made.
Removing migration '<timestamp>_AddInStock'.
Reverting model snapshot.
但是为什么在发布dotnet ef migrations remove --force
时我没有此消息?
答案 0 :(得分:2)
dotnet ef migrations remove
通常不会修改您的数据库,但是由于您使用的是--force
选项,因此会进行修改。
如果未指定--force
,则必须使用dotnet ef database update
将数据库回滚到以前的迁移,然后才能调用remove
。
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet#dotnet-ef-migrations-remove