最初Code First意味着您使用代码创建模型,然后为您生成数据库。
使用迁移,现在看起来我添加/更改模型,然后我必须使用新API手动描述更改。
这是对的吗?
答案 0 :(得分:1)
我会试着“混淆”你:)
有两个独立的组件:EntityFramework和Migrations。
在Entity Framework中,您将为您生成模型和数据库。但是,如果您对模型进行了更改,则需要手动更新数据库,否则EntityFramework会向您抛出错误。这就是Code First Migration的用武之地。它可以手动或自动管理数据库升级。
迁移是可选的,但是一个很好的包,可以避免直接的SQL交互。
答案 1 :(得分:1)
实际上并不正确 - 但是责任的某些重叠可能令人困惑。
有点简化 - 最初的EF,代码首先没有考虑增量代码/模型更改。
引入了迁移来解决这个问题 - 并且基本上有助于典型的开发生命周期,您的代码和模型将通过不同的版本(以及分期,生产时)进行演变。
迁移将__MigrationHistory
表添加到您的Db中 - 迁移是数据库,代码模型和该表(保存和跟踪历史记录)之间的“树方式”同步过程。
但是,它不会改变代码优先的性质 - 并且所有都会自动检测并编写脚本(这是整点) - 并且还会自动应用(来自如果你使用MigrateDatabaseToLatestVersion
Db初始化程序,代码,没有PS)。
您需要做的只是作为开发人员通常对您的期望 - 为您的代码模型设置“检查点” - 并且创建迁移 - 当你真正觉得时间适合的时候。 您通过PS控制台执行此操作。
然后,您可以在开发计算机或任何其他部署的控制台上应用该迁移 - 或者从代码中自动执行迁移。
这是我的一篇文章,我在那里进行了一次hands on
迁移 - 可能的问题,所有这些都放在一个我能想到的地方。