我是EF的新手并继承了一个显然使用数据库优先开发的项目。
生产环境使用SQL Azure,我基本上试图找出更新其架构的标准方法。
首先,我尝试在尝试此处描述的过程之前启用EF项目的迁移: http://www.dotnet-tricks.com/Tutorial/entityframework/R54K181213-Understanding-Entity-Framework-Code-First-Migrations.html ...但我发现只适用于代码优先开发。
现在我打算做的是对我在本地开发环境中运行的数据库进行更改,然后使用我的本地数据库更新我的EF项目中的模型。
从那里开始,我想将更改部署到SQL Azure环境中,同时保留数据库中的所有现有记录,但最好的方法还不清楚。
EF工具中是否有任何内容可以生成不丢弃表的更新脚本?我是否需要手动编写更新脚本?人们通常使用SQL Server工具来进行更新吗?
不幸的是,我最初的谷歌搜索没有找到问题的答案,尽管这似乎是一个非常普遍的问题。
答案 0 :(得分:2)
EF迁移用于代码优先开发,而不是数据库优先。但是如果你从数据库进行逆向工程,你仍然可以使用它。为了能够这样做,您需要安装The Entity Framework 6 Tools,但这需要一些努力,比如
Enable-Migrations
,Add-Migration InitialCreate
,Update-Database ConnectionStringName NewDatabase
)Enable-Migrations
,Add-Migration UpgradeToVersionX
,Update-Database ConnectionStringName NewDatabase -Script
)EF数据库逆向工程也存在与唯一约束相关的问题。
但是,由于您首先使用数据库直接从数据库修改架构,因此更简单的方法是使用SQL Server Data Tools的架构编译器。
生成的脚本与手动编写脚本一样接近,可能更少人为错误,如拼写错误。