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

标签 mysql entity-framework-core devart entity-framework-core-2.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')到所有加入。如果我尝试在 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/

相关文章:

postgresql - 通过 ADF 从 PostgreSQL 检索数据时,希腊字符集导致问题

delphi - 在 Delphi XE2 上使用 UniDac 的 PostgreSQL 串行(自动增量)

PHP:将唯一的随机数写入数据库

asp.net-core - web.config 中的 ASP.NET 5/EF7 连接字符串?

entity-framework-core - Abp Framework 错过了 IRepository.AsNoTracking() (或者无法使用 Select、Where)

sql - postgres 的 dotconnect - 未知参数方向

php - MySQL - 如何选择值在数组中的行?

mysql - cfapplication停止bind/Ajax功能?

php - 图片到第一行

c# - asp.net core 2.1 中的值对象作为无效对象