asp.net – 使用实体框架进行部署后数据库更改的最佳实践
我正在开发一个ASP.NET Web Forms项目,即使在部署之后,该项目也会经历大量的数据库更改.
我们倾向于使用Entity Framework 5和Database First设计范例.但是,由于我们必须在部署之后对数据库进行大量更改,如果我使用数据库优先方法,那么每次更新数据库时,我都必须删除整个模型并重新生成它.是否有任何最佳实践可以减少这个过程的痛苦? 解决方法
您应该使用Code First,以便可以使用迁移.
更具体地说,我使用手动迁移. 通过手动迁移,您可以随时创建迁移.迁移具有以下信息: >当前模型的快照 除了必要的迁移之外,您还应该在部署应用程序时添加新的迁移.例如,当您部署应用程序的1.0版时,可以创建名为“Version 1.0”的迁移. 完成每个新的稳定版本后,只需添加一个新的迁移,例如“版本1.1”或“版本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,您必须手动完成所有这些操作,并仔细跟踪它.所以我强烈建议使用迁移. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在.cshtml页面上显示所有Session变量
- asp.net – 关闭Application Insights
- asp.net-mvc – 在Asp.net MVC中导出到Excel [已关闭]
- asp.net-mvc – 如何在将model属性传递给局部视图时保持正确
- ASP.NET(C#)应用程序配置文件app.config/web.config的增、删
- asp.net – 在.net 3.5中使用两个值绑定下拉列表
- asp.net-mvc-4 – 在ASP.NET MVC中包文件位置
- 我可以在Asp.Net中的另一个页面中访问一个页面的ViewState吗
- asp.net-mvc – Html.TextBox条件属性与ASP.NET MVC预览5
- asp.net – 为什么WebMethod访问会话状态没有EnableSession
- asp.net-mvc – 查找会话状态的所有使用
- ASP.NET中MVC使用AJAX调用JsonResult方法并返回自
- 如何更改.Net页面将在其下运行的扩展名?
- ASP.NET:开始<%%>的'#'是什么意思?
- asp.net – 在IIS中,existingResponse =“PassTh
- asp.net-mvc-4 – 编辑并继续不在Windows 7,32位
- asp.net-mvc – Css和脚本不工作,直到用户登录网
- asp.net – 如何根据用户角色启用和禁用按钮?
- asp.net – 如何在visual studio中查看cshtml页面
- 如何从ASP .NET网站检测客户端上安装的Java运行时