当前位置: 首页 > news >正文

Entity Framework – Update Model From Database, Part 2

Entity Framework – Update Model From Database, Part 2
 
Update Model from Database 是EDM 设计器的一个重要改进功能,支持增加新的数据库表和列,Model能够正确处理类型(Type)和属性(Property)的改名,能够检测继承和映射的改变。这里,我们简要介绍这一功能的使用及其限制。
 
上一篇文章《Entity Framework – Update Model From Database, Part 1》,链接地址:
http://blog.entlib.com/EntLib/archive/2008/10/19/entity-framework-update-model-from-database-part-1.aspx
 
接下来再次更新model,这次增加了上述2个新表。Model相关部分的更新如下:


现在,我们从SupplierContract复制属性到Suppliers类型,并删除 SupplierContracts类型。接着到Suppliers 类型的表映射视图,通过点击<Add a Table or View> 单元,并选择 SupplierContracts,并映射Suppliers类型到SupplierContracts 表。映射视图如下图所示:


我们特别选中需要手动更改的地方:SuppliercontractID 列必须映射到Suppliers类型的ID属性,这是为了Entity Framework 理解如何构建合适的数据库查询。
 
接着,我们删除PremiumSuppliers 和Suppliers之间的关联,是PremiumSuppliers继承Suppliers类型。并删除PremiumSuppliers中的PremiumSupplierID属性,因为这个主键现在继承自Suppliers,修复后的映射如下图所示:



Model相关部分如下图所示:



 
最后,我们再次更新model,这次model不会发生变化。上述向导分析了映射,同时也注意到2个PK-to-PK的关联替换为:一个为继承关系;另一个映射一个类型到2个数据表。
 
关于向导限制的最后总结如下:
1. 当相应的数据库列更新时,不能自动更新类型的属性。
2. 不能重新添加实体类型(entity types)- 一旦你在model中删除了一个类型,重新添加这一实体类型的方法是手动创建,或者在XML编辑器中手动删除SSDL中相应的XML元素。
3. 也不能重新恢复属性。
4. 如果你更改类型的主键,所有当前的关联将丢失它们的identity,且将引入新的关联 – 你需要删除旧的关联。
5. 不能检测数据库对象的更名 – 更名意味着删除旧的对象,增加新的对象。
 
除了这些限制外,你也将发现这一新的功能不仅有用,而且适用。期待你的反馈。
 
英文链接:
1. ADO.NET team blog, Update Model From DB,
http://blogs.msdn.com/adonet/archive/2008/04/01/update-model-from-db.aspx

 

 

相关文章:

  • mac 关闭指定端口
  • 邮件系统,企业的沟通桥梁,不可以宕机
  • WinForm+ADO.net应用(一)
  • 自制简单的image图片服务器,404原理
  • 统计学图书列表
  • mongodbOperator
  • ASP.NET 进度条(附源代码)
  • mysql数据库参数文件性能调试工具:tuning-primer.sh
  • 你要金婚?还是金色软件?
  • OpenGL三维显示中纹理闪烁和颜色跳变的问题
  • Tom Baeyens谈过程虚拟机
  • 【博客园发文技巧】不离开编辑页面,批量添加图片链接和设置图片大小
  • 治大国若烹小鲜
  • JSONP使用笔记
  • AJAX 中Sys.WebForms.PageRequestManager(ajax请求添加客户端事件)的事件激发顺序
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Android框架之Volley
  • Apache的基本使用
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Java读取Properties文件的六种方法
  • leetcode-27. Remove Element
  • Linux后台研发超实用命令总结
  • Wamp集成环境 添加PHP的新版本
  • zookeeper系列(七)实战分布式命名服务
  • 初识MongoDB分片
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 基于遗传算法的优化问题求解
  • 解决iview多表头动态更改列元素发生的错误
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用 Docker 部署 Spring Boot项目
  • 微信支付JSAPI,实测!终极方案
  • 一道面试题引发的“血案”
  • 一个完整Java Web项目背后的密码
  •  一套莫尔斯电报听写、翻译系统
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • linux 淘宝开源监控工具tsar
  • #每天一道面试题# 什么是MySQL的回表查询
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (转)winform之ListView
  • (转)视频码率,帧率和分辨率的联系与区别
  • .CSS-hover 的解释
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net6 webapi log4net完整配置使用流程
  • .NET大文件上传知识整理
  • .net开发引用程序集提示没有强名称的解决办法
  • @31省区市高考时间表来了,祝考试成功
  • [145] 二叉树的后序遍历 js
  • [20150629]简单的加密连接.txt
  • [acwing周赛复盘] 第 94 场周赛20230311