实体框架 - 区分多个值

时间:2011-05-04 12:46:22

标签: entity-framework table-per-hierarchy

在Table-Per-Hierachy场景中,是否可以区分可能的值列表?

e.g。对于类型Color, DarkColor, LightColor

类似

 Map<DarkColor>(m => m.Requires("TheColor").HasValue(Red || Blue)
 Map<LightColor>(m => m.Requires("TheColor").HasValue(Yellow || White)

糟糕的例子,但希望你能得到照片!

2 个答案:

答案 0 :(得分:1)

不,这是不可能的。

实体框架仅允许使用条件的交集进行映射,而不是条件的并集。
您可以在designer[1]和EDMX语法[2]中看到这一点。
*代码首先应具有相同的映射功能。

[2]如果右键单击edmx文件并选择“打开方式...” - &gt; “自动编辑器选择器(XML)”并尝试手动编辑您将看到的映射条件(从智能感知),在条件之间无法输入“OR”。

答案 1 :(得分:0)

首先,我不确定你想要什么是可能的,EF想要处理鉴别器列,并且基于类类型,它想设置鉴别器值,在这种情况下,如何它将设置值,可能的值。从DB加载它没有任何区别,但在尝试将其序列化到数据库时有点问题。

1-你试过为每个可能的值做多个地图:)你可能有一个错误,说DarkColor已被映射。

2-第二个建议是添加一个[NotMapped] ColorWeight属性,并根据theColor返回黑色或白色,并使用此属性作为鉴别字段,但我猜表格中应存在Discriminator字段。