Использование Guid в качестве столбца идентификатора в NHibernate вызывает исключение формата при использовании MySQL - PullRequest
5 голосов
/ 24 июня 2009

Когда я определяю сущность / отображение NHibernate для использования Guid в качестве столбца идентификации, я получаю исключение. Столбец Guid генерируется как varchar (40), но содержимое кажется двоичным.

Есть ли решение для этого? На данный момент я просто использую обычный старый, но было бы неплохо узнать о будущих проектах! :)

Ответы [ 2 ]

7 голосов
/ 30 июня 2009

В документации MySql Connector указано, что начиная с версии 5.2 .NET-коннектора они обрабатывают GUID как BINARY (16) , а не VARCHAR (40) .

Поскольку текущий диалект MySQL в nhibernate не обновляется, чтобы отразить это изменение (на самом деле подготовлена ​​проблема ) вам нужно вручную конвертировать эти поля в BINARY (16) после nhibernate сгенерировать схему.

5 голосов
/ 26 января 2010

Еще одним обновлением является то, что последние разъемы используют Char (36)

Эта опция была представлена ​​в Соединителе / ​​NET 6.1.1. Внутреннее представление типа GUID было изменено с BINARY (16) на CHAR (36). Это было сделано, чтобы позволить разработчикам использовать серверную функцию UUID () для заполнения таблицы GUID - UUID () генерирует строку из 36 символов. Разработчики старых приложений могут добавить «Old Guids = true» в строку подключения, чтобы использовать GUID типа данных BINARY (16).

...