我在当前项目中使用的是Entity Framework 2.2.2,并且必须对数据库进行一些更专业的查询。
在开发过程中,我总是检查EF产生的查询,以确保它不会做超出我期望的事情。
目前,我正在TPH(按表分层结构)场景中工作,我只想查询基类的某些属性,但是EF始终在WHERE
子句中包含鉴别符。
最小样本查询如下
SELECT `x`.`Id` AS `Id0`, `x`.`Id`
FROM `TestResults` AS `x`
WHERE `x`.`discriminator` IN (2, 3, 1, 0)
它后面的查询大致如下:
Context.TestResults
.Select(x => new
{
Id = x.Id
});
尽管在我看来,这实际上并不会影响性能,但我想知道是否可以以某种方式为特定查询禁用discriminator列,从而避免使用WHERE
子句?