Последовательность не содержит элементов при сравнении Guid в предикате с MySql.Data.Entity. - PullRequest
2 голосов
/ 18 августа 2011

Я использую Entity Framework с MySQL, и у каждой таблицы есть столбец идентификатора типа CHAR (36).В файле EDMX все они имеют тип System.Guid, и xml SSDL выглядит следующим образом:

<EntityType Name="Accounts">
  <Key>
    <PropertyRef Name="ID" />
  </Key>
  <Property Name="ID" Type="guid" Nullable="false" />
  ...

Когда я пытаюсь использовать любой метод (Single, Where, Any и т. Д.), Он генерирует исключение InvalidOperationExceptionзаявив, что последовательность не содержит элементов.Вот странная часть, если я разверну представление результатов в отладчике, оно покажет элементы.Значения GUID одинаковы, поэтому он должен возвращать ровно один элемент.Я включил картинку ниже (щелкните правой кнопкой мыши, чтобы увидеть увеличенное изображение), но кто-нибудь может объяснить, что здесь происходит?Код GUID соответствует:

(method argument) accountID: 
{7767402f-9b29-4026-b40d-6eb991748f8c}
(should match) element in results view:
{7767402f-9b29-4026-b40d-6eb991748f8c}

enter image description here

1 Ответ

0 голосов
/ 18 августа 2011

Могу поспорить, что это ошибка в коннекторе MySQL и что это связано с тем, как GUID хранится в БД.По какой-то причине сравнение не работает.Я думаю, что вы должны использовать BINARY (16) вместо CHAR (36).

Проверьте ответ на этот вопрос: Хранение идентификаторов GUID / UUID MySQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...