我们在我们的应用程序中采用了代码优先的方法。我们有一个类似这样的简单层次结构:
SuperSpecializedPerson 扩展 SpecializedPerson 扩展(抽象)Person
我们有 SuperSpecializedPerson 和 SpecializedPerson 的两个存储库。查询 SuperSpecializedPerson 时,返回的实体是想要的实体。查询 SpecializedPerson 时,将返回所有 SpecializedPerson 以及 SuperSpecializedPerson(作为 SpecializedPerson 的实例)。这是我的问题。
检查 SQL 查询是看到这部分代码WHERE ([Extent1].[Discriminator] IN (N''SuperSpecializedPerson '',N''SpecializedPerson''))
,我想有WHERE ([Extent1].[Discriminator] IN (N''SpecializedPerson''))
。
我怎样才能只获得 SpecializedPerson?
[编辑] 我将为我的问题提供更多背景信息,以确定我是否完全走错了路:
我必须将相同类型的 DTO 列表从后端返回到前端。正在根据指定的映射配置文件使用 Automapper 创建 DTO。
首先我查询 SuperSpecializedPerson,将它们映射到 DTO,然后对 SpecializedPerson 进行同样的操作并将两个列表连接起来。合并后,我得到了所有 SuperSpecializedPerson 的两个实例(一次只有 SpecializedPerson 属性)。
所描述的模型是根据当前知识定义的,并且将来可能会有第二个类扩展 SpecializedPerson。