2

我们使用 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 将无法在其他项目中工作。

处理这种情况的最佳方法是什么?

4

1 回答 1

4

我的感觉是,这与迁移的意图背道而驰。我认为您应该将DbContext、 实体和迁移拆分为两个项目之间共享的单独程序集。

如果这不是一个选项,您必须禁用与模型的兼容性检查。兼容性检查是作为IDBInitializer.InitializeDatabase实现的一部分完成的,它负责调用Database.CompatibleWithModel,因此编写您自己的自定义 DB Initializer 什么都不做将使您通过该步骤。这也意味着您接管了确保数据库与模型兼容的责任。EF 帮不了你了。

于 2012-05-26T18:57:25.087 回答