实体框架数据库迁移脚本

时间:2016-02-10 17:30:23

标签: sql .net entity-framework scripting migration

好的,这就是我的情况。我从数据库中生成了POCO并围绕它们开发。我还重命名并更改了一些这些POCO,使其更具可读性。我现在已经对原始数据库方案进行了更改,并且需要将更改迁移回我的模型,而不会覆盖我的更改,除非方案已更改。有没有办法生成一个* .sql脚本由DBA提交?如果是这样,有没有办法比较两个dbs并生成一个更改脚本? ie - dev db => prod db。

1 个答案:

答案 0 :(得分:1)

您可以先将项目切换为代码,然后通过迁移生成所需的脚本。请参阅下面的链接,获取有关从db首先转到代码的指南,但听起来您可能已经部分在那里了。

1)enable-migrations用于包含您的上下文的项目,如果您还没有。

2)创建基线迁移。 EF将使用它作为起点,因此您不会获得一堆代码来创建已存在的对象。 ignore changes标志告诉EF不要创建现有对象。 https://msdn.microsoft.com/en-us/data/dn579398.aspx?f=255&MSPPError=-2147217396#option1

create-migration InitialCodeFirst -IgnoreChanges

3)现在像往常一样修改架构并创建迁移:

add-migration SomeNewThing

4)使用-Script为不同的数据库(如PROD)创建脚本。这不会更新你的数据库它只是创建一个脚本,所以我通常不使用-Script运行它:

update-database -Script    // creates a script (in VS), but does not apply
update-database            // updates the database your connect string points to

5)DBA运行脚本,这将向__MigrationHistory添加一条记录,以将其标识为已应用。

http://devgush.com/2014/02/24/migrating-a-project-from-database-first-to-code-first/

以下是有关部署的有用链接:http://cpratt.co/migrating-production-database-with-entity-framework-code-first/#at_pco=smlwn-1.0&at_si=54ad5c7b61c48943&at_ab=per-12&at_pos=0&at_tot=1