随笔 - 150  文章 - 0  评论 - 554  阅读 - 30万

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》,链接地址:
 
接下来再次更新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,

 

 

posted on   EntLib  阅读(1494)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
< 2008年10月 >
28 29 30 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示