在服务器中使用 Entity Framework 的 Migration 更新数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在服务器中使用 Entity Framework 的 Migration 更新数据库相关的知识,希望对你有一定的参考价值。

在开发环境中,每次我们对要对数据库进行更改,比如增加修改表字段等。改好Entity类后,我们只需在Nuget程序包管理控制台运行 update-database 脚本却可:

update-database

Entity Framework提供的这个Migration功能非常方便,基本上不用再打开Sql Server Management Studio了。那么如何在发布环境(服务器)中同步我们对数据库的修改呢?

一种方法是在运行 update-database 脚本加上 -verbose 或 -script 参数:

update-database -script

这样每次都会生成SQL脚本,把生成的SQL脚本Copy下来,然后再到服务器上去执行即可。

但这样非常不方便,万一中间有一次我在本地执行了而忘了在服务上运行相应的SQL脚本呢?这带来的麻烦不可想像。

我们有更好的办法,就是在服务器上也和本地一样执行 update-database。

具体做法如下:

把 /packages/EntityFramework6.1.3/tools/migrate.exe 文件拷贝到服务器发布环境的bin目录下。

将以下 cmd 命令另存为 migrate.bat 文件:

migrate.exe Example.EF.dll /startupConfigurationFile="..\web.config"
pause

Exmaple.EF.dll 是你编写Entity Framework Migration的工程的dll。

migrate.exe 也可以不放在bin目录,你可以使用单独创建一个文件夹(如tools)来存放,但需要把 EntityFramework.dll 和 EntityFramework.SqlServer.dll 也放入此文件夹。另外,命令行还要指定参数 /startUpDirectory:"bin完整目录",并且 /startupConfigurationFile 参数也要提供完整的 web.config 路径。

这样每次发布程序只需运行此bat文件即可,非常方便,而且能保证服务器的数据库本版始终和本地同步。

以上是关于在服务器中使用 Entity Framework 的 Migration 更新数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 Entity Framework 6 中使用 MySQL 和 MSSQL

Entity Framework中IQueryable, IEnumerable, IList的区别[转]

如何使用 Entity Framework Core 正确保存 DateTime?

在使用 Entity Framework 进行数据库迁移期间,如何避免 .NET 5 WebApp 中出现 Windows 服务错误 1053?

如何在 Entity Framework 5 中使用基于 SQL 会话的表

.NET Entity Framework 与复制的 SQL 服务器一起使用