4

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

例子:

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

public class B : A {
}

public class C : A {
}

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

例子:

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

有不同类型的项目(文本、单选、复选框),它们都使用抽象render()方法以不同方式呈现。这些子类型中的每一个还具有该对象所需的一组特定项目设置。

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

我已经使用 DBML 完成了这类事情。我想使用实体框架,因为它更强大,但可能没有办法做我正在寻找的东西。

4

1 回答 1

0

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

于 2012-07-10T18:55:14.933 回答