从 DBMigration Up() 内部调用 Entity Framework 个模型
Calling Entity Framework models from inside DBMigration Up()
我们正在使用 Entity Framework Code-First。我们的一个旧数据库需要应用多个迁移,但是在(比如说)7 个中的 3 个上,迁移失败
错误:支持 'MyContext' 上下文的模型自数据库创建以来已更改。
同样的迁移对我们的其他数据库也运行良好,但这些数据库随着迁移的出现而更新 - 即一次一个迁移。
该迁移的 DBMigration Up() 方法使用我们的一些 EF 模型 类 进行一些数据更改,因此我认为问题在于我们模型的代码期望迁移 7 存在。
除了将所有 EF 调用从 Up()/Down() 移动到 Seed() 方法(这会将 link 丢失到它适用的迁移之外,是否有任何策略可以避免这种影响到)?
为您构建迁移时,它不会调用您的模型,这是有意为之的。如果您在早期迁移中的 Up() 中使用了自己的模型,然后决定不再需要这些模型,那么迁移将会被破坏。
您认为 Seed 方法是专门为处理添加相关数据(如通用查找等)而构建的,这是正确的。如果您要一起删除一个查找 table,您只需删除它不再需要的播种逻辑。
基本上,迁移不应直接与任何 EF 模型直接关联,这是一种有意的关注点分离。
为同事建议的我自己的问题添加备选答案;在 Up/Down 方法中使用 ADO.net 调用而不是 EF 调用。这允许数据随着迁移而向上或向下更改,而不是种子方法(它真的不知道它是否在该迁移更改中上升或下降)。
不过,我认为 Runesun 更好地回答了问题的 'why',因此标记为正确。
我们正在使用 Entity Framework Code-First。我们的一个旧数据库需要应用多个迁移,但是在(比如说)7 个中的 3 个上,迁移失败
错误:支持 'MyContext' 上下文的模型自数据库创建以来已更改。
同样的迁移对我们的其他数据库也运行良好,但这些数据库随着迁移的出现而更新 - 即一次一个迁移。
该迁移的 DBMigration Up() 方法使用我们的一些 EF 模型 类 进行一些数据更改,因此我认为问题在于我们模型的代码期望迁移 7 存在。
除了将所有 EF 调用从 Up()/Down() 移动到 Seed() 方法(这会将 link 丢失到它适用的迁移之外,是否有任何策略可以避免这种影响到)?
为您构建迁移时,它不会调用您的模型,这是有意为之的。如果您在早期迁移中的 Up() 中使用了自己的模型,然后决定不再需要这些模型,那么迁移将会被破坏。
您认为 Seed 方法是专门为处理添加相关数据(如通用查找等)而构建的,这是正确的。如果您要一起删除一个查找 table,您只需删除它不再需要的播种逻辑。
基本上,迁移不应直接与任何 EF 模型直接关联,这是一种有意的关注点分离。
为同事建议的我自己的问题添加备选答案;在 Up/Down 方法中使用 ADO.net 调用而不是 EF 调用。这允许数据随着迁移而向上或向下更改,而不是种子方法(它真的不知道它是否在该迁移更改中上升或下降)。
不过,我认为 Runesun 更好地回答了问题的 'why',因此标记为正确。