.net core 在Efcore中,包含按子项筛选的筛选器未按预期工作

.net core 在Efcore中,包含按子项筛选的筛选器未按预期工作,.net-core,entity-framework-core,ef-core-5.0,.net Core,Entity Framework Core,Ef Core 5.0,我使用的是EFCore 5,我遵循以下结构 公共类用户:AuditableEntity { 公共字符串Id{get;set;} 公共字符串鉴别器{get;set;} 公共用户 { } } 公共类CustomerUser:用户 { 公共字符串CustomerId{get;set;} //公共bool?IsAdmin{get;set;} 公共客户客户{get;set;} } 公共类CustomerAdmin:CustomerUser { } 公共类客户:AuditableEntity { ... 公

我使用的是EFCore 5,我遵循以下结构

公共类用户:AuditableEntity { 公共字符串Id{get;set;} 公共字符串鉴别器{get;set;} 公共用户 { } } 公共类CustomerUser:用户 { 公共字符串CustomerId{get;set;} //公共bool?IsAdmin{get;set;} 公共客户客户{get;set;} } 公共类CustomerAdmin:CustomerUser { } 公共类客户:AuditableEntity { ... 公共ICollection CustomerUsers{get;private set;} ... } 我使用LINQ查询来获取基于子类类型的关系。有人认为我必须使用鉴别器列

等待_dbContext.Customers .Includex=>x.CustomerUsers.where u=>u是CustomerAdmin .Selectx=>newTMPQueryResult { CustomerId=x.Id, UserInfo=x.CustomerUsers.Selecty=>newuserinfo { Id=y.Id, IsAdmin=y是CustomerAdmin } } .FirstOrDefaultAsyncx=>x.CustomerId==request.CustomerId;; 生成的查询是

已执行的DbCommand 30ms[参数=[@uuu请求\u客户ID\u 0='16d2d324-0aac-4c9e-af3a-fef537a4de70'大小=255],命令类型='Text',命令超时='30'] 选择't`.'Id`、't0`.'Id`、't0`.'IsAdmin` 从…起 选择'c`.`Id` 从'Customers'改为'c` 其中`c`.`Id`=@\u请求\u客户Id\u 0 限制1 AS`t` 左连接 选择'u`.'Id`、'u`.'Discriminator`='CustomerAdmin'作为'IsAdmin`、'u`.'CustomerId'` 从'Users'改为'u` 其中“u”。“CustomerUser”、“CustomerAdmin”、“OfficeManager”、“Provider”中的“Discriminator” 作为't'上的't0'。'Id`='t0`.'CustomerId` 按't`.'Id`、't0`.'Id`排序` u=>u为CustomerAdmin未被转换为 鉴别器'IN'CustomerAdmin'

我使用的是Pomelo.EntityFrameworkCore.MySql版本5.0.0。我不明白为什么它不能按预期工作,或者我在这里做错了什么。

对于自定义投影,Include被完全忽略,因此您必须在投影中重复您的鉴别器过滤器

等待_dbContext.Customers .Selectx=>newTMPQueryResult { CustomerId=x.Id, UserInfo=x.CustomerUsers .其中u=>u是CustomerAdmin .Selecty=>newuserinfo { Id=y.Id, IsAdmin=y是CustomerAdmin } } .FirstOrDefaultAsyncx=>x.CustomerId==request.CustomerId;;