700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Entity Framework -- 使用类别字段的实体继承关系

Entity Framework -- 使用类别字段的实体继承关系

时间:2020-07-04 20:59:43

相关推荐

Entity Framework -- 使用类别字段的实体继承关系

我们经常使用数据表中的类别字段来分辨所存记录的类型,在对象场景下,我们一般会将其演化为有继承关系的一组对象,以符合面向对象的设计和使用,那么我们在Entity Framework环境中如何来实现这样的实体关系呢?这里将通过一些例子,来说明一般场景下的使用方式。

场景一:数据表Peoples记录了一些人,每个人都有唯一的工作类别,在该场景下,我们需要按照工作类别来构建一组对象,使得人根据工作类别进行了分类。

首先创建数据表如图:

填充数据如下:

[假设我们只对人进行四种分类(演员、商人、程序员、运动员)]

现在我们使用VS从数据库创建PeopleModel.edmx模型,如图:

VS自动为我们创建了一个实体People,但是我们在这个场景下,需要有一个依据工作类别区分的对象层次,因此我们加入新的实体Actor(演员), Businessman(商人), Developer(程序员), Sporter(运动员) 他们都继承自People(创建实体时,指定其基类型为People), 如图:

创建后,我们得到了如下的模型:

现在,我们从People实体中删除JobCategory的映射,因为我们需要使用JobCategory来区别People的子类,而不是作为People的属性。设置People实体为抽象的(我们假设每一个人都有工作,呵呵)。

然后,使用VS中的"映射详细信息"视图,为每个子类设置其映射的表和条件。

每个子类都类似修改完毕后,我们的模型就大功告成了。

1<EntityTypeName="Peoples">

2<Key>

3<PropertyRefName="PeopleID"/>

4</Key>

5<PropertyName="PeopleID"Type="nvarchar"Nullable="false"MaxLength="50"/>

6<PropertyName="PeopleName"Type="nvarchar"Nullable="false"MaxLength="50"/>

7<PropertyName="JobCategory"Type="nvarchar"Nullable="false"MaxLength="50"StoreGeneratedPattern="Computed"/>

8</EntityType>

下面我们就可以通过代码来验证我们的模型了。

Code

classProgram

{

publicstaticvoidMain(string[]args)

{

QueryDevelopers();

Console.ReadLine();

}

privatestaticvoidQueryDevelopers()

{

using(varcontext=newPeopleEntities())

{

varquery=fromcincontext.Peoples

wherecisDeveloper

selectc;

foreach(varcinquery)

{

Console.WriteLine("ActorName:{0}",c.PeopleName);

}

}

}

}

classProgram

{

publicstaticvoidMain(string[]args)

{

QueryDevelopers();

Console.ReadLine();

}

privatestaticvoidQueryDevelopers()

{

using(varcontext=newPeopleEntities())

{

varquery=fromcincontext.Peoples

wherecisDeveloper

selectc;

foreach(varcinquery)

{

Console.WriteLine("ActorName:{0}",c.PeopleName);

}

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。