Соединитель MySql с Entity Framework: сравнение идентификаторов GUID Char (36) в предложении LINQ Where - PullRequest
0 голосов
/ 05 июля 2011

Я думаю, что название в значительной степени прибивает его.

Я использую Char (36) в таблице MySql, которая автоматически распознается как GUID при использовании Entity Framework.

Вставка 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, если они не работают.

1 Ответ

1 голос
/ 15 июля 2011

Я знаю, что было не так: это была просто глупая ошибка для меня.

То, что сравнение гидов было совершенно правильным, это не та часть, которая вызвала ошибку.На самом деле более поздняя часть того же запроса LINQ вызвала ошибку.Это сравнило ProviderUserKey (Object) с ID (int).ProviderUserKey - это, по сути, int, мне просто нужно было явно указать его тип (CType(Object, Integer) в VB.NET или (int)Object в C #)

...