我目前正在使用Entity Framework和MySql提供程序。还使用SoftDeleteInterceptor过滤数据。显示我的问题的最简单方法是这个例子:
context.GetQuery(m => m.AnyColumn == true || m.Name != "Test").ToList();
这被翻译为:
SELECT *
FROM `Table` AS `Extent1`
WHERE
(1 = `Extent1`.`AnyCOlumn`) OR
((('Test' = `Extent1`.`Name`) AND (`Extent1`.`Name` IS NOT NULL))) AND
`Extent1`.`Deleted` != 1;
我替换了Select to *
中的所有列,因为它不是此问题的一部分。我的问题是,为什么OR
表达式没有括号,因此可以使用Soft Delete中的AND
。因为当OR
的左侧部分为真时,将跳过其他条件。如何解决这个问题?或者如何添加括号?有什么建议?