Вопрос по nhibernate, guid, mysql – Использование Guid в качестве столбца идентификатора в NHibernate вызывает исключение формата при использовании MySQL

5

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

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

NHibernate сгенерировал это. Сейчас у меня нет доступного исключения, но это было исключение в отношении формата. l3dx
Что является исключением? Вы создали столбец как varchar (40) или NHibernate сгенерировал схему? Jamie Ide

Ваш Ответ

2   ответа
7

что начиная с версии 5.2 .NET-коннектора они обрабатывают GUID какBINARY(16) неVARCHAR(40).

Since current MySQL dialect in nhibernate doesn't updated to reflect this change (actually an issue is prepared) you need to manually convert these fields to BINARY(16) after nhibernate generate the schema.

Я получал то же самое в последние несколько дней. это реальный спасатель жизни.
5

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

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

Похожие вопросы