Entity Framework -- 使用类别字段的实体继承关系
场景一:数据表Peoples记录了一些人,每个人都有唯一的工作类别,在该场景下,我们需要按照工作类别来构建一组对象,使得人根据工作类别进行了分类。
首先创建数据表如图:
填充数据如下:
[假设我们只对人进行四种分类(演员、商人、程序员、运动员)]
现在我们使用VS2008从数据库创建PeopleModel.edmx模型,如图:
VS2008自动为我们创建了一个实体People,但是我们在这个场景下,需要有一个依据工作类别区分的对象层次,因此我们加入新的实体Actor(演员), Businessman(商人), Developer(程序员), Sporter(运动员) 他们都继承自People(创建实体时,指定其基类型为People), 如图:
创建后,我们得到了如下的模型:
现在,我们从People实体中删除JobCategory的映射,因为我们需要使用JobCategory来区别People的子类,而不是作为People的属性。设置People实体为抽象的(我们假设每一个人都有工作,呵呵)。
然后,使用VS2008中的"映射详细信息"视图,为每个子类设置其映射的表和条件。
每个子类都类似修改完毕后,我们的模型就大功告成了。
1 <EntityType Name="Peoples">
2 <Key>
3 <PropertyRef Name="PeopleID" />
4 </Key>
5 <Property Name="PeopleID" Type="nvarchar" Nullable="false" MaxLength="50" />
6 <Property Name="PeopleName" Type="nvarchar" Nullable="false" MaxLength="50" />
7 <Property Name="JobCategory" Type="nvarchar" Nullable="false" MaxLength="50" StoreGeneratedPattern="Computed"/>
8 </EntityType>
下面我们就可以通过代码来验证我们的模型了。
class Program
{
public static void Main(string[] args)
{
QueryDevelopers();
Console.ReadLine();
}
private static void QueryDevelopers()
{
using (var context = new PeopleEntities())
{
var query = from c in context.Peoples
where c is Developer
select c;
foreach(var c in query)
{
Console.WriteLine("Actor Name : {0}", c.PeopleName);
}
}
}
}
class Program
{
public static void Main(string[] args)
{
QueryDevelopers();
Console.ReadLine();
}
private static void QueryDevelopers()
{
using (var context = new PeopleEntities())
{
var query = from c in context.Peoples
where c is Developer
select c;
foreach(var c in query)
{
Console.WriteLine("Actor Name : {0}", c.PeopleName);
}
}
}
}
转载于:https://www.cnblogs.com/crossingdawn/archive/2009/07/23/1529225.html
Entity Framework -- 使用类别字段的实体继承关系相关推荐
- Entity Framework默认值字段不起作用解决方法
Entity Framework默认值字段不起作用解决方法 参考文章: (1)Entity Framework默认值字段不起作用解决方法 (2)https://www.cnblogs.com/fox- ...
- Entity Framework入门教程:创建实体数据模型
下图为一个已经创建好的数据库表关系 实体数据模型的创建过程 在Visual Studio项目中,右键程序集菜单,选择[添加]->[新建项],在[添加新项窗口]中选择[ADO.NET实体数据模型] ...
- mysql ado.net 实体数据模型_Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源...
熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件. 但是这个模型向导默认只显示微软 ...
- ADO.NET Entity Framework如何:手动配置实体框架项目
如果在 Visual Studio 项目中使用实体数据模型向导,该向导将自动生成 .edmx 文件并将该项目配置为使用实体框架.有关更多信息,请参见 如何:使用实体数据模型向导(实体框架). 也可以手 ...
- ADO.NET Entity Framework建模和映射(实体框架)
在实体框架中,可以采用最适合您应用程序的方式定义概念模型.存储模型以及这两种模型之间的映射.使用 Visual Studio 中的实体数据模型工具,可以从数据库或图形模型创建一个 . edmx 文件, ...
- .net core Entity Framework 与 EF Core
重点讲 Entity Framework Core ! (一)Entity Framework 它是适用于.NET 的对象关系映射程序 (ORM),现在的EF6已经是久经沙场,并经历重重磨难,获得一致 ...
- [(转)hystar整理]Entity Framework 教程
预备知识 2 LINQ技术 2 LINQ技术的基础 - C#3.0 2 自动属性 2 隐式类型 2 对象初始化器与集合初始化器 3 匿名类 3 扩展方法 ...
- [hystar整理]Entity Framework 教程
目录 预备知识 2 LINQ技术 2 LINQ技术的基础 - C#3.0 2 自动属性 2 隐式类型 2 对象初始化器与集合初始化器 3 匿名类 3 扩展方法 ...
- Entity Framework Core 生成跟踪列
注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final).正式版发布时,功能可能存在变动. 当您设计数据库时,有时需要添加列以跟踪记录何时更改 ...
最新文章
- 如何使用OpenCV实现图像均衡???
- 2019 ACM - ICPC 全国邀请赛(南昌) 题解(9 / 12)
- Linux:让普通用户临时性获得root用户权限
- oracle约束的相关总结
- struts配置访问后缀为.do,.action,.*
- vantweapp中的SwipeCell踩坑
- 根据sessionId获取Session对象
- 使用Underscore.js的template将Backbone.js的js代码和html代码分离
- 程序阻碍OD调试的方式2
- 协同过滤推荐算法java_协同过滤推荐算法的原理及实现
- 追梦App系列博客——后端架构篇
- git查看历史记录及修改内容
- 何谓Palm size-PC及Pocket PC?
- 查看linux Mac地址
- 创建电子邮件链接 mailto
- 开源搜索引擎 种子搜索_使用开源搜索引擎自定义您的互联网
- 普通文本el-tootip超出宽度自动显示省略号,悬停显示
- awk从入门到入土(19)awk扩展插件,让awk如虎添翼
- 生物信息学python常用脚本_生物信息学一些基本的常用软件有哪些?
- 计算机的发展史英语作文,A History of Modern Computing-现代计算机历史 (英文原版)