在 Table-Per-Hierachy 场景中,是否可以区分可能值的列表?
例如对于类型Color, DarkColor, LightColor
就像是
Map<DarkColor>(m => m.Requires("TheColor").HasValue(Red || Blue)
Map<LightColor>(m => m.Requires("TheColor").HasValue(Yellow || White)
糟糕的例子,但希望你能明白!
在 Table-Per-Hierachy 场景中,是否可以区分可能值的列表?
例如对于类型Color, DarkColor, LightColor
就像是
Map<DarkColor>(m => m.Requires("TheColor").HasValue(Red || Blue)
Map<LightColor>(m => m.Requires("TheColor").HasValue(Yellow || White)
糟糕的例子,但希望你能明白!
不,这是不可能的。
实体框架仅支持使用条件的交集进行映射,而不是条件的联合。
您可以在设计器 [1]和 EDMX 语法 [2] 中看到这一点。
* 代码优先应该具有相同的映射能力。
[2] 如果您右键单击 edmx 文件并选择“打开方式...”->“自动编辑器选择器 (XML)”并尝试手动编辑映射条件,您将看到(从智能感知)不是在条件之间输入“OR”的选项。
首先,我不确定你想要的是否可能,EF想要处理鉴别器列,并且根据类类型,它想设置鉴别器值,在这种情况下,它会如何将值设置为可能的值。从数据库加载它时没有区别,但在尝试将其序列化到数据库时有点问题。
1-您是否尝试过为每个可能的值做多个映射:) 您可能会收到一个错误,说 DarkColor 已经被映射。
2-第二个建议是添加一个 [NotMapped] ColorWeight 属性,并根据颜色返回深色或白色,并将此属性用作鉴别器字段,但我猜鉴别器字段应该存在于表中。