实体框架 - 在多个值上进行区分

3
在表格继承的情况下,是否可以根据可能值的列表进行区分?
例如,对于类型“Color,DarkColor,LightColor”:
类似于
 Map<DarkColor>(m => m.Requires("TheColor").HasValue(Red || Blue)
 Map<LightColor>(m => m.Requires("TheColor").HasValue(Yellow || White)

这只是一个糟糕的例子,但希望你能理解!

2个回答

1

不,这是不可能的。

Entity Framework 只能使用条件的交集进行映射,而不能使用条件的并集。
这一点可以在设计师[1]和 EDMX 语法[2]中看到。
* Code First 应该具有相同的映射功能。

[2] 如果您右键单击 edmx 文件并选择“打开方式...”-->“自动编辑器选择器(XML)”,并尝试手动编辑映射条件,则会发现(从智能感知)没有选项可以在条件之间输入“OR”。


0
首先,我不确定你想要的是否可行。EF想要处理鉴别器列,并根据类类型设置鉴别器值。在这种情况下,它将如何设置值,以哪个可能的值为准?当从数据库加载时,这没有任何区别,但在尝试将其序列化到数据库时会有一些问题。
1- 你尝试过对每个可能的值进行多次映射吗:)你可能会遇到一个错误,说DarkColor已经被映射了。
2- 第二个建议是添加一个[NotMapped] ColorWeight属性,并根据theColor返回dark或white,并使用此属性作为鉴别器字段,但我认为鉴别器字段应该存在于表中。

我尝试了第一种方法,但是它确实报错了。 - jenson-button-event

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接