我正在读一本关于删除已应用的迁移的书:
”将要删除的迁移已应用到数据库时,您将看到一条警告。这很重要,因为存在将数据库置于无法升级的状态的风险,因为该架构与其余迁移期望找到的状态不匹配。”
我了解一个事实,即当应用程序查询数据库中的数据时,“不同步”的数据库和应用程序可能会引起问题,但是“模式与其余迁移期望找到的状态不匹配”又是什么呢?是什么意思?
假设我们在开始时有一个Product类
public class Product
{
public string Name { get; set; }
public string Category { get; set; }
}
并创建并应用以下初始迁移:
dotnet ef迁移添加初始
dotnet ef数据库更新
然后我添加了一个新属性InStock:
public class Product
{
public string Name { get; set; }
public string Category { get; set; }
public bool InStock { get; set; }
}
,然后创建并应用迁移为
dotnet ef迁移添加AddInStock
dotnet ef数据库更新
然后删除
所应用的迁移“ AddInStock”dotnet ef迁移删除--force
因此数据库中没有InStock克隆,
这是我不了解的,现在我处于“初始”迁移状态,此后没有任何迁移,因此“剩余的迁移希望找到什么”。来自?如果我将更多属性添加到Product类中并创建另一个迁移,则“ InStock”属性仍将位于新迁移中,当我应用新迁移时,一切都很好并且同步了,为什么书说它可以放置“数据库处于无法升级的状态”?