最近在几个公司内部的项目中使用了EF的Code First开发模式,感觉不错,但是也遇到了一些小小的问题.首先对于EF来说与数据库之间有多种开发模式,可以先设计类或者先设计数据库.从程序设计的角度来说Code First是一种很不错的方式,节省了我们对于数据库设计的工作,极大地提高了系统开发的效率。但是如果业务的需求发生变化,Code First就会遇到一些麻烦。 我们之前开发的系统上线2个月之后对于实体做了一些小修改,部署到服务器之后有一些View就出现了500的错误,其原因就是EF Code First在创建数据库的时候针对实体类作了Hash,并将Hash存储在数据库中的EdmMetadat表的ModelHash字段。当系统运行时,EF Code First会将运行的实体与数据库中的ModelHash进行比较,如果不同就会认为系统出现了变化,抛出异常。当然EF提供了一些数据库初始化的功能,但是当检测到变化后,初始化策略只能将原有的数据库删除重新根据实体关系建立数据库。如果数据库中已经有一部分数据,这些数据将会丢失。 目前我找到的一个解决方案是手工处理ModelHash的更新。如果实体发生变化,手工生成数据库变更的脚本,然后再测试机上运行系统,并从新生成的测试数据库中获取ModelHash的值,将这个值更新到生产库上就可以了。当然你也可以写的自动化一些,将测试库里面的ModelHash自动更新到生产库上。 在SQL Server 2008 R2 上有一个叫Data-Tier Application的组件,可以用来帮助用户快速开发和部署数据库应用程序。在部署和升级数据库的时候可以将原有的数据库保存并重新命名,而更新的数据库中还可以保留数据。如果可以将EF Code First与Data-Tier Application结合到一起,应用开发的效率会更高,但是目前还没有听说微软有这方面的打算。

转载于:https://www.cnblogs.com/weisun/archive/2011/07/20/2659279.html

小谈EntityFramwork Code First实体更新后的数据库处理相关推荐

  1. Win10更新后连不上网,电脑win10系统更新后连不上网

    最近好多同学的电脑更新系统后发现上不了网了 那么怎么解决呢?这里我从网上找了一些解决方法,也是我平常解决上不了网的一些常用方法 由于太懒的原因,我就直接ctrl+v了,希望对大家有所帮助 这里有一台w ...

  2. mac系统更新后code .命令打不开vs code

    mac系统更新后code .命令打不开vs code 前言:昨天mac系统更新后,出现了一些问题,首先,程序坞中找不到vs code这个软件,我还以为跟新后卸载了,有下了一个压缩包,就过在访达中的下载 ...

  3. dnf7月7日服务器维护,关于DNF5在小长假更新后的第一次7月7日更新内容的详细说明...

    DNF国服体验服务更新了的内容,主要包括五一版增加的一些小活动和氪金活动.为了让活跃的勇士们不至于很无聊和更新内容,也让玩家们在游戏中更加活跃,不断更新.这个问题的内容是相当好的,但实际上,他主要是从 ...

  4. python爬虫爬美女图片:“小甲鱼056节轮一只爬虫的自我修养4:OOXX” 最终更新2021.6.27日,更新后可用!!!

    目录 2020.10.25日更新 代码: 2020.11.10日更新 代码 2021.6.27日更新,更新后可用 2020.10.25日更新 需要改动有两个方面: 第一方面,网址编码有变化,如http ...

  5. win10更新后C盘可用空间越来越小怎么办

    win10系统每隔一段时间就会自动更新,尤其是大版本更新之后,c盘剩余空间会越来越小,反复更新多次,那么c盘可用空间将会达到红色警戒值. 那么win10纯净版更新后c盘可用空间越来越小要怎么办呢?最常 ...

  6. 小甲鱼零基础入门学习python--课后作业(更新至第19讲,持续更新)

    本章内容: 小甲鱼零基础入门学习python--课后作业 1.基础部分的作业 2.函数部分的作业 3.字典.集合.文件部分作业 4.异常 5.EasyGui 6.类.对象.魔法方法 7.模块 8.爬虫 ...

  7. 微信小程序常见问题集合(长期更新)

    最新更新: 新手跳坑系列:推荐阅读:<二十四>request:fail错误(含https解决方案)(真机预览问题 跳坑指南<七十>如何让微信小程序服务类目审核通过 跳坑六十九: ...

  8. Delphi 小谈之TList 篇

    Delphi 小谈之TList 篇 2010年08月23日 看了这里标题,大家可能以为我会谈TListBox控件,那就错了.我要谈的是Delphi提供给我们的具有列表性质的类:TstringList. ...

  9. 要不,和机器聊聊?-- 小谈Bot系统

    系列目录: 要不,和机器聊聊?– 小谈Bot系统 Seq2Seq Chatbot 聊天机器人:基于Torch的一个Demo搭建 手札 深度学习(BOT方向) 学习笔记(1) Sequence2Sequ ...

最新文章

  1. swift_001(Swift的注释)
  2. spring boot中data truncation data too long for column问题
  3. 《快速软件开发——有效控制与完成进度计划》
  4. nginx 域名配置_nginx 一个域名配置多个vue项目
  5. iOS学习:CAShapeLayer与DrawRect对比,与UIBezierPath画图形
  6. mac 安装brew及设置国内镜像
  7. 自定义一个ImageSwitcher
  8. c++读取.dat文件_Python之旅,Day5 - 文件操作
  9. Lourakis/ Levenberg-Marquardt nonlinear least squares algorithms in C/C++
  10. 4.熟悉App Inventor 2编程界面
  11. guava 的重试机制 guava-retrying 使用
  12. 329例精选matlab算法原理及源码详解——老生谈算法
  13. 学生签到系统c代码_学生信息管理系统C代码
  14. 关于IE样式兼容问题
  15. WP8最大的败笔就是只能用Win8做开发
  16. latex 小于_小于等于 latex
  17. android cts问题分析,一则CTS测试错误分析
  18. GUI提示功控件,LVGL『Label标签控件』介绍
  19. 给网页质量进行瘦身的办法-金瑞帆建站
  20. Linux:root下的文件-anaconda-ks.cfg详解

热门文章

  1. 对抗攻击层出不穷?神经科学带来新突破、导出智能统一框架,Hinton:我早有洞见
  2. 深度:中国智能制造分析报告
  3. 黑科技揭秘 | 阿里云“天空物联网”连接范围如何达到700平方公里
  4. 触摸心灵-触觉感知和发展的模型
  5. 全球自动驾驶汽车发展指数哪家强?美德领衔,中国第七
  6. 教你怎么卷过别人 | 每日趣闻
  7. 高校毕业生:今年“太惨了”,网友:更惨的可能还在后头!
  8. Confluence 6 重构 ancestor 表
  9. sqlserver字段类型详解
  10. 一个简单的Java web服务器实现