使用具有自定义子类的实体框架

时间:2012-07-10 16:19:13

标签: c# database entity-framework

我正在使用C#实体框架将数据映射到项目的sql server。我试图找到一种方法来使用实体框架自动生成基于鉴别器字段的自定义子类,同时不要求子类实体具有表。

示例:

在实体框架中,我有一个对象A,其中有一个字段type。我也有以下

public class B : A {
}

public class C : A {
}

我正在寻找一种方法让实体框架认识到type字段是例如B,然后创建B类的实例。这些类没有需要持久保存到数据库的数据。它们只是不同表中行的包装器。

示例:

我有一个项目对象表。每个项目对象都有一个项目设置集合和一个项目类型字段。

有不同类型的项目(文本,广播,复选框),并且使用抽象render()方法对它们进行不同的渲染。这些子类型中的每一个还具有该对象所需的一组项目设置。

如果我可以创建实体子类而不必将它们映射到数据库,我可以将TextItem作为Item的子类,实现我的render()方法以及映射到项目中每个值的添加属性设置表。然后,当我从数据库中提取新项目时,根据类型字段,它将根据鉴别器自动创建我的特定类。

我使用DBML做过这种事情。我想使用实体框架,因为它更强大,但可能没有办法去做我正在寻找的东西。

1 个答案:

答案 0 :(得分:0)

这称为每层次表映射,EDMXcode first都可以。要真正使其工作,必须映射子类,因为EF必须知道它们的存在才能将鉴别器值正确转换为正确的类型。整个类层次结构映射到单个数据库表。