当前位置 : 主页 > 网络编程 > ASP >

asp.net – 使用实体框架进行部署后数据库更改的最佳实践

来源:互联网 收集:自由互联 发布时间:2021-06-24
我正在开发一个ASP.NET Web Forms项目,即使在部署之后,该项目也会经历大量的数据库更改. 我们倾向于使用Entity Framework 5和Database First设计范例.但是,由于我们必须在部署之后对数据库进行大
我正在开发一个ASP.NET Web Forms项目,即使在部署之后,该项目也会经历大量的数据库更改.

我们倾向于使用Entity Framework 5和Database First设计范例.但是,由于我们必须在部署之后对数据库进行大量更改,如果我使用数据库优先方法,那么每次更新数据库时,我都必须删除整个模型并重新生成它.是否有任何最佳实践可以减少这个过程的痛苦?

您应该使用Code First,以便可以使用迁移.

更具体地说,我使用手动迁移.

通过手动迁移,您可以随时创建迁移.迁移具有以下信息:

>当前模型的快照
>从上一次迁移升级的一组“说明”
>一组降级到上一次迁移的“指令”

除了必要的迁移之外,您还应该在部署应用程序时添加新的迁移.例如,当您部署应用程序的1.0版时,可以创建名为“Version 1.0”的迁移.

完成每个新的稳定版本后,只需添加一个新的迁移,例如“版本1.1”或“版本1.2”.

当您拥有已部署的应用程序版本并且需要升级(或降级)到新版本时,迁移的有趣部分会显示出来.

有些命令可以让您从一个特定版本升级(或降级)数据库
到另一个特定版本.您可以直接指定与DB的连接,也可以创建将更改应用于DB的SQL脚本.例如,如果您在客户服务器中部署了1.0版,并且需要将软件升级到1.2版,则可以执行以下操作:

Update-Database -SourceMigration "Version 1.0" -TargetMigration "Version 1.2" 
      -Script

这将创建一个SQL脚本,可以在DB上运行以从1.0版升级到1.2.

如果您需要有关任何迁移命令的帮助,只需键入:

get-help Update-Database -full

(Update-Database是一个命令名,您可以指定任何其他类似Add-Migration)

您可能需要指定模型所在的项目,连接字符串名称,带有.config文件的项目名称或其他一些内容,具体取决于指定的参数以及解决方案中项目的结构.

要获得有关迁移的更多信息,请阅读MSDN EF Code First Migration.

注意在版本中添加:有一个新的数据库初始化程序,可以在应用程序运行时自动迁移到最新版本.我曾经在一个真正的应用程序中工作过,它就像一个魅力.

替代SSDT

如果您不想遵循建议,可以使用SQL Server数据工具(可以安装在VS中,也可以作为独立的应用程序,具体取决于您使用的版本).

此工具的想法是您可以将项目(数据库模式快照)与现有数据库进行比较,并生成脚本以更改数据库以匹配项目中的模式. (实际上你可以比较项目和DB的任何组合)

如果您在CVS中保留项目的版本,您甚至可以检查从项目的一个版本到项目的其他版本的更改.

注释增加版本:SSDT项目是一组脚本,可以构建整个数据库,包括其模式中的所有对象.您可以从现有数据库创建它,也可以反之.然后,您可以继续比较DB和SSDT项目的任何组合,作为soruce或target,并创建应用脚本所需的更改每个具有更改的特定对象. (创建脚本是为了更改目标,使其看起来像源,但您可以轻松地交换源和目标)

这是一种替代解决方案,但迁移功能更强大,因为您可以自定义它们,例如在创建它时填充“主表”,设置新列的初始值等等.如果您使用SSTD,您必须手动完成所有这些操作,并仔细跟踪它.所以我强烈建议使用迁移.

网友评论