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

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

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

填充数据如下:

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

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

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

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

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

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

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

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

posted @ 2009-07-23 11:56  Crossing Dawn  阅读(2161)  评论(3编辑  收藏  举报