DevArt dotConnect for Oracle在使用EF 4.0的字符串上有奇怪的行为

时间:2012-11-15 13:21:21

标签: c# .net entity-framework devart dotconnect

在我将项目更新到DevArt的V7.2.114之后,我发现有些查询不会返回结果,尽管生成的SQL如果直接在TOAD中执行则返回结果。如果我切换回7.0.25版本,一切正常。

我的数据库Customer-table如下所示:

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;

但它没有效果。

1 个答案:

答案 0 :(得分:1)

请尝试使用dotConnect for Oracle的最新版本(7.2.122)。如果这没有帮助,请指定以下信息:         1)打开dbMonitor工具并在此处(或在forums.devart.com/viewforum.php?f=30)发布生成的SQL,使用的参数(它们的类型和值);         2)涉及的数据库列的确切数据类型;         3)您使用的是OCI(通过Oracle客户端)还是直接连接模式?