gpt4 book ai didi

mysql - Ef core 在查询过滤器或 TPH 中创建子查询而不是联接

转载 作者:行者123 更新时间:2023-11-29 16:24:40 25 4
gpt4 key购买 nike

我将实体配置为始终使用属性“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吗?也许第 3 方提供商可以修复它?

最佳答案

我们无法在我们的环境中重现该问题。请通过https://www.devart.com/company/contactform.html向我们发送一个带有相应DDL脚本的小型测试项目.

关于mysql - Ef core 在查询过滤器或 TPH 中创建子查询而不是联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54310501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com