У меня есть объект, настроенный на всегда запрашивать свойство "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? Может, сторонний провайдер может это исправить?