我将实体配置为始终使用属性“ 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')
添加到所有联接。如果我尝试使用查询过滤器,或者在Entity Framework Core中使用按层次结构继承表,则会出现问题-所有联接的表都变为子查询。这会破坏我的表现。
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?也许第三方提供商可以解决此问题?
答案 0 :(得分:0)
我们无法在我们的环境中重现该问题。请通过https://www.devart.com/company/contactform.html向我们发送一个包含相应DDL脚本的小型测试项目。