实体框架5代码迁移

时间:2012-10-11 07:40:45

标签: entity-framework

  1. 哪里存储有关当前数据库状态的信息(应用了哪些迁移)?我想它可以是“dbo .__ MigrationHistory”表或者此表仅用于记录目的吗?

  2. 如果我启用了迁移,则添加了迁移并更新了我的数据库。之后,我向SVN签入了代码,另一位开发人员检查了它。另一个开发人员必须做些什么才能创建/更新自己的数据库?

  3. 我看到了这样的选择:

    1)立即调用Update-Database命令。

    2)从头开始执行所有操作(启用 - 迁移,添加迁移,更新 - 数据库)。

    3)除了跳过Add-Migration步骤之外做任何事情(它已经存在,并且对于每个新开发者再次添加它似乎很奇怪。)

    我的哪个假设是正确的,或者没有人在哪里是正确的方式?

1 个答案:

答案 0 :(得分:1)

  1. 要检索哪些迁移已应用于数据库,您可以使用Get-Migrations命令(reference)。

  2. 一切都取决于数据库的创建方式,使用的是哪个初始值设定项。 This article is worth reading if you are unfamiliar with those.

    • 使用DropCreateDatabaseAlways初始化程序时,您并不需要关心更新数据库,因为您的数据库将被删除&在每个应用程序启动时重新创建。

    • 使用DropCreateDatabaseWhenModelChanges initiliazer时,如果EF在应用程序启动时检测到模型已更改,则会删除数据库,然后重新创建。

    • 使用CreateDatabaseIfNotExists初始化程序或未定义初始化程序时,如果数据库尚不存在,则将创建该数据库。如果数据库已存在&您添加了迁移,您(以及检索代码的每个开发人员)都需要使用Update-Database命令来更新数据库。

    • 代码优先迁移引入了一个新的初始化程序:MigrateDatabaseToLatestVersion,此初始化程序会自动将数据库更新为最新的迁移定义。 请参阅此页的最后一节:http://msdn.microsoft.com/en-us/data/jj591621