在我将我的项目更新到 DevArt 版本 7.2.114 之后,我意识到某些查询不会返回结果,尽管如果直接在 TOAD 中执行生成的 SQL 会返回结果。如果我切换回版本 7.0.25 一切正常。
我的数据库客户表如下所示:
SomeField | Firstname | CustomerNo
(null) | John | 12345
12345 | John | 12345
828282 | Mark | 12346
我的查询如下所示:
var firstNameToSearch = "John";
var someFieldToSearch = null;
var result = from customer in context.Customers
join someTable in context.SomeTables on customer.CustomerNo equals "12345"
where someTable.SomeCondition && (someTable.SomeField == someFieldToSearch || someFieldToSearch == null) && (customer.Firstname == firstNameToSearch || firstNameToSearch == null)
现在,当我执行 EF 查询时,它将产生 0 条记录,没有任何异常。但是如果我使用 SQL 命令,它将产生 2 条记录。
如果我将第 2 行中的代码更改为:
var someFieldToSearch = string.Empty;
它将返回正确的结果。
我发现了一些指向此代码的提示:
Devart.Data.Oracle.Entity.OracleEntityProviderServices.HandleNullStringsAsEmptyStrings = true;
但它没有任何效果。