【发布时间】:2023-04-06 21:11:01
【问题描述】:
使用 Entity Framework 4 CTP5 Code First 和 this example
是否可以访问判别器值?
我想在像这样的投影中使用它
context.BillingDetails.Select(x => new { Number = x.Number, DiscrimitatorValue = /* how do I get the discriminator value? */ });
来自this post,我了解到鉴别器无法映射到属性,但还有其他访问方式吗?
【问题讨论】:
-
不——你不能。判别器被排除在模型之外。想要在投影中使用它的原因是什么?你能举一个例子要求/查询你试图实现的目标吗?
-
@RPM1984 我想将我的查询投影到一个包含来自连接表的信息的新类型,但如果我这样做,我将丢失我的原始类型信息以供记录。返回的对象将是我的新类型,我将无法识别它们的原始类型。我希望我可以将鉴别器值投射到新类型上,从而解决问题
-
同样的问题..想要选择所有记录及其类型。也许有人知道解决方法?
-
EF 对 TPH 的支持很糟糕。任何公共映射 API 都不支持它。您可以通过一些类获得映射,但属性甚至类型通常是内部的,因此无法使用。它位于名为 Configuration 的 EdmType 的 MetadataProperties 集合条目中,然后在内部属性 SubTypeMappingConfigurations 下,您可以找到鉴别器,最终它们的值隐藏在更多声明为“内部”的属性中。完全没用。我为什么还要费心迁移到 EF Core,它对此的支持比零还差。
标签: entity-framework-4 code-first entity-framework-ctp5