热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ADO.NETEnityFrame的继承设置VS2008(SP1)

以前在VS2005中用过强类型的DataSet,比较痛苦;相比之下EF会好很多,如果在EF中使用继承再结合Lambda,对于查询来说确实是方便不少.结合了其他几位高人的文章形成了我

以前在VS2005中用过强类型的DataSet, 比较痛苦;相比之下EF会好很多, 如果在EF中使用继承再结合Lambda,对于查询来说确实是方便不少.结合了其他几位高人的文章形成了我这篇文字,  这篇文字主要介绍如何从表之间的主从关系设置为在EF中的"父子关系", 即主从表改为继承关系.

1. 首先, 数据库的结构如下图

 

2010011500132990.jpg

(图-1)

从图中可以看出UserOrGroup是Group和User的主表,是一对多的关系, 下面的例子就是要修改这种关系为Group, User继承于UserOrGroup.

 

2.  在VS2008(SP1) 中,新建一个ADO.NET Entity Data Model对象,默认的文件名是Model1.edmx,然后将图-1所示的表包含到Model1.edmx中,形如

2010011500273398.jpg

(图-2)

删除图-2中UserOrGroup与User, Group之前的关系(见图-3)

2010011500290311.jpg

(图-3)

删除User对象的UserID属性, 删除Group对象的GroupID属性

2010011500313267.jpg

(图-4)

选中UserOrGroup对象,将它的Abstract属性设为True.

现在要设置User, Group与UserOrGroup对象的继承关系,即UserOrGroup是父类, User是UserOrGroup的子类; UserOrGroup是父类, Group是UserOrGroup的子类. 在UserOrGroup对象上点击鼠标右键,在弹出的快捷菜单中依次选择Add->Inheritance,

2010011500371542.jpg

(图-5)

在弹中的窗口中在Select a derived entity处选择Group, 重复上述步骤并在Select a derived entity处选择User, 以完成User和Group对UserOrGroup的继承

2010011500390436.jpg

(图-6)

设置好以后最终显示如图-7

2010011500395966.jpg

(图-7)

 

因为刚才已删除User, Group与UserOrGroup之间的关系,所以现在要重新建立:设置User.UserID与UserOrGroup.ID关联(图-8), 设置Group.GroupID与UserOrGroup.ID关联(图-9)

注: 只需要设置红框标识的Value/Property地方

2010011500432398.jpg

(图-8)

 

2010011500435017.jpg

(图-9)

 

GroupMember保存Group与User的关系,刚才在删除User,Group与UserOrGroup关系的同时,GroupMember与Group, User的关系也一起消失,所以这里要重新设置,如图-10

2010011500480488.jpg

(图-10)

 

 

设置好与GroupMember的映射以后就完成了设置User, Group继承UserOrGroup的操作.

 

 

 

结束语:  我也是刚使用ADO.NET Entity, 目前只体验到在涉及关联查询的操作上十分方便。

注: 这不是DDD.

 

 

参考引用:

体验ADO.NET Entity Framework的继承

Entity Framework Modeling : Entity Splitting

Entity Framework Modeling: Entity Splitting Part II (adding inheritance)

转:https://www.cnblogs.com/terrysun/archive/2010/01/15/1648179.html



推荐阅读
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • 本文讲述了孙悟空写给白骨精的信件引发的思考和反省。孙悟空在信中对自己的行为进行了反思,认识到自己胡闹的行为并没有给他带来实际的收获。他也揭示了西天取经的真相,认为这是玉皇、菩萨设下的一场陷阱。他还提到了师傅的虚伪和对自己的实心话,以及自己作为师傅准备提拔的对象而被派下来锻炼的经历。他认为路上的九九八十一难也都是菩萨算计好的,唐僧并没有真正的危险。最后,他提到了观音菩萨在关键时刻的指导。这封信件引发了孙悟空对自己行为的思考和反省,对西天取经的目的和自己的角色有了更深入的认识。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
author-avatar
陈鑫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有