Entity framework 实体框架6模型优先-基于本地更改更新生产数据库

Entity framework 实体框架6模型优先-基于本地更改更新生产数据库,entity-framework,azure-sql-database,entity-framework-6,ef-database-first,ef-model-first,Entity Framework,Azure Sql Database,Entity Framework 6,Ef Database First,Ef Model First,我是EF的新手,继承了一个显然使用数据库优先开发的项目 生产环境使用SQLAzure,我基本上在尝试找出更新其模式的标准方法 首先,我尝试为EF项目启用迁移,然后尝试下面描述的过程: …但我发现这只适用于代码优先开发 现在我计划做的是对我在本地开发环境中运行的数据库进行更改,然后使用本地数据库更新EF项目中的模型 从这里开始,我希望在保留数据库中所有现有记录的同时将更改部署到SQLAzure环境,但最好的方法尚不清楚 EF工具中是否有任何东西可以生成不删除表的更新脚本?我需要手动编写更新脚本吗?

我是EF的新手,继承了一个显然使用数据库优先开发的项目

生产环境使用SQLAzure,我基本上在尝试找出更新其模式的标准方法

首先,我尝试为EF项目启用迁移,然后尝试下面描述的过程: …但我发现这只适用于代码优先开发

现在我计划做的是对我在本地开发环境中运行的数据库进行更改,然后使用本地数据库更新EF项目中的模型

从这里开始,我希望在保留数据库中所有现有记录的同时将更改部署到SQLAzure环境,但最好的方法尚不清楚

EF工具中是否有任何东西可以生成不删除表的更新脚本?我需要手动编写更新脚本吗?人们通常使用SQL Server工具来进行更新吗


不幸的是,我最初的谷歌搜索没有找到这个问题的答案,尽管这似乎是一个非常常见的问题。

EF迁移用于代码优先开发,而不是数据库优先。但若你们从数据库中进行逆向工程,你们仍然可以使用它。要做到这一点,您需要安装,但这需要一些努力,如

  • 逆向工程源数据库
  • 使用EF迁移生成新数据库(
    启用迁移
    添加迁移初始值创建
    更新数据库连接字符串名称新数据库
  • 对目标数据库进行反向工程(已修改的数据库)
  • 生成升级脚本
    启用迁移
    将迁移升级添加到版本X
    更新数据库连接字符串名称新数据库-脚本
此外,EF数据库反向工程还存在与唯一约束相关的问题


但由于您首先使用数据库,直接从数据库修改模式,所以更简单的方法是使用的模式比较器

  • 创建SQL Server数据库项目的新项目(从其他语言->SQL Server)
  • 右键单击项目,选择“模式比较”
  • 选择源数据库和目标数据库
  • 运行生成脚本


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

您使用哪个Visual Studio和.NET版本?可能更高版本的插件可以解决这个问题。谢谢。我还没有试过你推荐的,但看起来很像我想要的。