Entity framework 实体框架6模型优先-基于本地更改更新生产数据库
我是EF的新手,继承了一个显然使用数据库优先开发的项目 生产环境使用SQLAzure,我基本上在尝试找出更新其模式的标准方法 首先,我尝试为EF项目启用迁移,然后尝试下面描述的过程: …但我发现这只适用于代码优先开发 现在我计划做的是对我在本地开发环境中运行的数据库进行更改,然后使用本地数据库更新EF项目中的模型 从这里开始,我希望在保留数据库中所有现有记录的同时将更改部署到SQLAzure环境,但最好的方法尚不清楚 EF工具中是否有任何东西可以生成不删除表的更新脚本?我需要手动编写更新脚本吗?人们通常使用SQL Server工具来进行更新吗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迁移用于代码优先开发,而不是数据库优先。但若你们从数据库中进行逆向工程,你们仍然可以使用它。要做到这一点,您需要安装,但这需要一些努力,如
- 逆向工程源数据库
- 使用EF迁移生成新数据库(
,启用迁移
,添加迁移初始值创建
)更新数据库连接字符串名称新数据库
- 对目标数据库进行反向工程(已修改的数据库)
- 生成升级脚本(
,启用迁移
,将迁移升级添加到版本X
)更新数据库连接字符串名称新数据库-脚本
但由于您首先使用数据库,直接从数据库修改模式,所以更简单的方法是使用的模式比较器
- 创建SQL Server数据库项目的新项目(从其他语言->SQL Server)
- 右键单击项目,选择“模式比较”
- 选择源数据库和目标数据库
- 运行生成脚本
生成的脚本与手动编写脚本一样接近,可能更少的人为错误,如打字错误。您使用哪个Visual Studio和.NET版本?可能更高版本的插件可以解决这个问题。谢谢。我还没有试过你推荐的,但看起来很像我想要的。