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