SoftDeleteInterceptor生成无效的WHERE子句

时间:2017-10-20 14:05:16

标签: c# mysql entity-framework

我目前正在使用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的左侧部分为真时,将跳过其他条件。如何解决这个问题?或者如何添加括号?有什么建议?

0 个答案:

没有答案