работа с Fluent NHibernate и идентификаторами guid - PullRequest
5 голосов
/ 20 июня 2011

Мы работаем с Fluent NHibernate 1.2, и нашим основным ключом является guid, сохраненный в столбце nvarchar (32) , работающем с Oracle 11gr2.

Как мы можем заставить эту работу? (делает автоматическое преобразование ...)

Спасибо, случайный программист ...

UPDATE: забыл упомянуть, гид сохраняется БЕЗ тире ...

1 Ответ

6 голосов
/ 20 июня 2011

Обновление:

Вам нужно будет реализовать свой собственный IUserType для работы с бесстрастными гидами. Вы можете прочитать об этом здесь:
http://dotnet.dzone.com/articles/understanding-nhibernate-type

Подробности, приведенные ниже, теперь не имеют отношения к вопросу, но я оставлю их здесь для дальнейшего использования людьми.

Использование направляющих "обычно"

В вашей сущности идентификатор должен быть типа Guid:

public virtual Guid Id { get; private set; }

И в вашей ClassMap вы должны отобразить это так:

Id(x => x.Id)
  .Column("Id")
  .GeneratedBy.GuidComb();

При этом будет использоваться рекомендуемый алгоритм гребенки для создания новых направляющих.

или

Id(x => x.Id)
  .Column("Id")
  .GeneratedBy.Guid();

чтобы генерировать новых гидов, используя System.Guid

или

Id(x => x.Id)
  .Column("Id")
  .GeneratedBy.GuidNative();

если вы хотите, чтобы база данных генерировала Guid для вас.

...