2011-07-05 17 views
0

タイトルがかなり釘付けだと思います。Entity Frameworkを使用したMySqlコネクタ:LINQ Where句のChar(36)GUIDの比較

私は、Entity Frameworkを使用する際に自動的にGUIDとして認識されるMySqlテーブルでChar(36)を使用しています。

GUIDの挿入は問題ありませんが、WHERE句で比較しようとすると悪夢です。私が試した何

:すべての

まず私がWHERE element.GUID == GuidToCompareを試してみました。

これは、その後、私は単なる文字列に値を変換しようとしたLINQ to Entities does not recognize the method 'System.Object CompareObjectEqual(System.Object, System.Object, Boolean)' method, and this method cannot be translated into a store expression.

が生じ、そのよう:

WHERE element.GUID.ToString() == GuidtoCompare.ToString()

これは、このエラーが発生しました:だからLINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.

いずれかの方法で、私はちょうどそれらを比較することはできません。うまくいかない場合は、GUIDを使用しないように準備ができています。

+0

what's element.GUIDの型ですか?ガイドや文字列? –

+0

実際はGUIDです。 – sinni800

+0

これらのうちの1つはGUIDではない、またはL2Eは 'CompareObjectEqual'を見ないでしょう。 L2Eは確かに2つのGUIDを直接比較してサポートします*。あなたのタイプをチェックしてください。 –

答えて

1

私は何が間違っているのか知っています。それは自分自身のばかげたエラーでした。

guidsを比較したことは間違いなく、これはエラーを出した部分ではありませんでした。実際には、同じLINQクエリの後半部分でエラーが発生しました。それはProviderUserKey (Object)ID (int)を比較した。 ProviderUserKeyはint型であるため、明示的に型(VB.NETのCType(Object, Integer)またはC#の(int)Object)を明示しなければなりませんでした

関連する問題