我首先使用EF代码创建我的数据库,现在正在生产和测试应用程序,所以我需要运行迁移来更新数据库,因为我的模型会发生变化。
我已经根据标准指令设置了迁移,并且它可以正常使用dev数据库。我还有一个我希望与当前代码库一致的第二个数据库,但是第二个数据库处于未知状态。
我想知道的是我可以针对不同的数据库生成迁移类吗?我该怎么做?我似乎无法针对我在设置迁移时指定的原始数据库以外的任何内容生成迁移类。我在app.config中更改了数据库名称,但在进行迁移时仍然会查看原始数据库。
如何明确指定生成迁移脚本的数据库?
答案 0 :(得分:0)
除了检查是否已应用迁移(__ MigrationHistory)之外,迁移不会查看数据库。设置迁移时,它会获取代码模型的快照,并在向前移动时使用它。因此,如果您希望在迁移控制下将数据库置于未知状态,则需要使其与代码模型匹配。
您可以执行与此类似的操作:从当前数据库(update-database -Script –SourceMigration $InitialDatabase
)创建idempotent script。这相当于创建数据库并使数据库保持最新所需的所有迁移。由于您具有存在某些对象的现有数据库,因此您需要通过删除已存在的项的代码来手动调整脚本。一旦你申请它,你就应该拥有一个与你的模型匹配的数据库和一个填充的__MigrationHistory表。
另一个选择是使用schema compare utility使数据库匹配,然后只复制__MigrationHistory表。