0

プロジェクトを 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;

しかし、それは効果がありません。

4

1 に答える 1

1

dotConnect for Oracle の最新 (7.2.122) バージョンをお試しください。これで問題が解決しない場合は、次の情報を指定してください: 1) dbMonitor ツールをオンにして、ここ (またはforums.devart.com/viewforum.php?f=30 ) に、生成された SQL を投稿し、使用したパラメーター (それらの型と値) ); 2) 関連するデータベース列の正確なデータ型。3) OCI (Oracle クライアント経由) または直接接続モードを使用していますか?

于 2012-11-16T13:39:40.297 に答える