entity-framework – Entity Framework 6 Model-First – 基于本地更改更新生产数据库

我是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工具来进行更新吗?

不幸的是,我最初的谷歌搜索没有找到问题的答案,尽管看起来这应该是一个非常普遍的问题.

最佳答案 EF迁移用于代码优先开发,而不是数据库优先.但是如果你从数据库进行逆向工程,你仍然可以使用它.为了能够这样做,你需要安装
The Entity Framework 6 Tools,但这需要一些努力,比如

>逆向工程源数据库
>使用EF迁移生成新数据库(启用 – 迁移,添加 – 迁移InitialCreate,Update-数据库ConnectionStringName NewDatabase)
>逆向工程目标数据库(已修改的数据库)
>生成升级脚本(启用 – 迁移,添加 – 迁移UpgradeToVersionX,Update-Database ConnectionStringName NewDatabase -Script)

EF数据库逆向工程还存在与唯一约束相关的问题.

但是,由于您首先使用数据库直接从数据库修改模式,因此更简单的方法是使用SQL Server Data Tools的Schema Comparer.

>创建SQL Server数据库项目的新项目(来自其他语言 – > SQL Server)
>右键单击项目,选择Schema Compare
>选择源数据库和目标数据库
>运行生成脚本

生成的脚本与手动编写脚本一样接近,可能更少人为错误,如拼写错误.

点赞