在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)
糟糕的例子,但希望你能得到照片!
答案 0 :(得分:1)
不,这是不可能的。
实体框架仅允许使用条件的交集进行映射,而不是条件的并集。
您可以在designer[1]和EDMX语法[2]中看到这一点。
*代码首先应具有相同的映射功能。
[2]如果右键单击edmx文件并选择“打开方式...” - &gt; “自动编辑器选择器(XML)”并尝试手动编辑您将看到的映射条件(从智能感知),在条件之间无法输入“OR”。
答案 1 :(得分:0)
首先,我不确定你想要什么是可能的,EF想要处理鉴别器列,并且基于类类型,它想设置鉴别器值,在这种情况下,如何它将设置值,可能的值。从DB加载它没有任何区别,但在尝试将其序列化到数据库时有点问题。
1-你试过为每个可能的值做多个地图:)你可能有一个错误,说DarkColor已被映射。
2-第二个建议是添加一个[NotMapped] ColorWeight属性,并根据theColor返回黑色或白色,并使用此属性作为鉴别字段,但我猜表格中应存在Discriminator字段。