EF核心创建子查询中查询过滤器或TPH,而不是加盟

问题描述 投票:0回答:1

我有实体配置为总是被查询与属性“DELETED” =“N”。在EF 6,我可以这样做:

modelBuilder.Entity<MyEntity>().Map(m => m.Requires("DELETED").HasValue("N"))

SELECT `n`.`id`. FROM `OtherEntity` AS `n` LEFT JOIN `MyEntity` as `e` ON (`e`.`DELETED`='N') AND (`e`.ID = `n`.ID)

和所有加入ORM会自动添加AND (DELETED = 'N')。如果我尝试使用查询过滤器,或者每一个分层继承表中实体框架的核心有一个问题 - 所有连接的表都转向了子查询。它杀死我的表现。

modelBuilder.Entity<BaseEntity>().HasDiscriminator(e => e.Deleted) .HasValue<MyEntity>("N");

SELECT `n`.`id`.
FROM `OtherEntity` AS `n` 
LEFT JOIN (
    SELECT `n.Ent`.*
    FROM `MyEntity` AS `n.Ent`
    WHERE `n.Ent`.`DELETED` = 'N'
) AS `t` ON `n`.`ID` = `t`.`ID`

有什么办法改善这个SQL?也许第三方提供商可以解决这个问题?

mysql entity-framework-core devart entity-framework-core-2.1
1个回答
0
投票

我们不能在我们的环境中重现该问题。请通过https://www.devart.com/company/contactform.html与相应的DDL脚本给我们一个小的测试项目。

© www.soinside.com 2019 - 2024. All rights reserved.