我在实体框架中设置了一个TPH(每个层次的表),在其中使用了名为Discriminator的列来分隔不同的EntityType。

即当Discriminator为0时,类型为Dog,如果为1,则为Cat,依此类推

现在,我想将一些用于(质量)更新的代码从EF移动到自定义ExecuteSqlCommand

题:
是否可以通过MetadataWorkspace或通过其他方式从Type中提取Discriminator值?

我正在寻找类似GetDiscriminatorValue<Cat>("ColumnName")的东西

如果不可能:还有另一种方法,这样我就不必在代码中的某些地方对这些值进行硬编码了吗?

谢谢,

最佳答案

我还没有尝试过,但是看来您可以使用反射和MetadataWorkSpace获取值(以及其他非公共属性)。看一下这个例子:http://blog.cincura.net/231942-tph-mapping-discriminator-condition-from-metadataworkspace/

07-27 19:25