0

次のような結果を返すクエリをlinqで記述しようとしています。

PeopleEntities pe = new PeopleEntities();
String fName = "Τάκης";
var people = pe.Person.Where(per => per.FirstName.Equals(fname)).ToList();

を使用してクエリをダンプすると

String query = ((ObjectQuery)pe.Person.Where(per => per.FirstName.Equals(fname))).ToTraceString();
Console.WriteLine(query);

次に、値を提供するMySQL WorkBenchでクエリを使用すると、すべてが正常に機能しますが、コードではクエリは何も返しません。

編集:MySQLコネクタを使用してエンティティマネージャに接続しました。以前は考えていませんでしたが、MsSQL接続ではすべてが正常に機能するため、これが問題です。

上記を実行する方法について何かアイデアはありますか?

4

1 に答える 1

0

地域に依存するクエリではstring.Equals()StringComparison値を指定せずに使用しないでください。例:

var people = pe.Person.Where(
    per => per.FirstName.Equals(fname, StringComparison.CurrentCultureIgnoreCase));

はい、この過負荷はL2Eでサポートされています。

それでも機能しない場合は、AppDomainの現在のカルチャまたはDBの照合が間違っている可能性があります。SQLプロファイラーのクエリ/パラメータを確認してください。

于 2012-12-07T13:11:28.257 に答える