我们正在使用EF Code First进行手动迁移(AutomaticMigrationsEnabled = false;)。问题是我们需要在两个项目之间共享一个数据库。
Project-A
---DbContext-A
---------Model1
---------Model2
---------Model3
Project-B
---DbContext-A
---------Model2
---------Model3
---------Model4
某些迁移文件是相同的,但其中一些是不同的。例如:Project-B需要Model4,但Project-A不需要..
目前,如果我使用一次迁移更新数据库,DbContext将无法在其他项目中使用。
处理这种情况的最佳方法是什么?
答案 0 :(得分:4)
我的感觉是,这违背了迁移的意图。我认为您应该将DbContext
,实体和迁移分解为两个项目之间共享的单独程序集。
如果这不是一个选项,则必须禁用与模型的兼容性检查。兼容性检查是作为IDBInitializer.InitializeDatabase
实现的一部分完成的,该实现负责调用Database.CompatibleWithModel
,因此编写自己的自定义数据库初始化程序不执行任何操作会让您超过该步骤。这也意味着您承担了确保数据库与模型兼容的责任。 EF不再为您提供帮助。