我们正在使用Entity Framework Code-First。我们的旧数据库之一需要应用多个迁移,但在(例如)7个中,迁移失败并且
错误:支持' MyContext'自创建数据库以来,上下文已发生变化。
同样的迁移对我们的其他数据库工作正常,但是这些dbs在迁移过程中更新了 - 即一次迁移一次。
该迁移的DBMigration Up()方法使用我们的一些EF模型类来进行一些数据更改,因此我认为问题是我们模型的代码期望迁移7在那里。
除了将所有EF调用从Up()/ Down()移动到Seed()方法(失去了适用于它的迁移的链接)之外,是否有任何策略可以避免这种影响?
答案 0 :(得分:1)
当您为自己搭建一个迁移时,它没有针对您的模型的调用,而且这是故意的。如果您在早期迁移中使用自己的模型Up(),然后决定不再需要这些模型,那么迁移就会变得很糟糕。
您认为Seed方法专门用于处理添加相关数据(如通用查找等)是正确的。如果您要一起删除查找表,您只需删除不再存在的种子逻辑必需的。
基本上,这是一种故意的关注点,即迁移不应直接与任何EF模型直接相关。
答案 1 :(得分:0)
为同事建议的我自己的问题添加一个替代答案;在Up / Down方法中使用ADO.net调用而不是EF调用。这使得数据可以通过迁移进行更改或更改,而不是种子方法(实际上并不知道迁移更改是否正在减少)。
不过,我认为Runesun回答了为什么'这个问题更好,所以标记正确。