Пользовательские конвертеры для типов доменов, использующих NHibernate - PullRequest
1 голос
/ 11 сентября 2009

Моя модель домена использует System.Net.Uri для представления URL-адресов и System.Drawing.Color для представления цветов. В db uris - это просто nvarchars, а цвета - это web (hex) значения rgb.

Используя NHibernate, есть ли способ сопоставления этих значений с помощью какого-либо пользовательского сопоставления?

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

Любая помощь очень ценится.

Ответы [ 2 ]

4 голосов
/ 11 сентября 2009

Что вам нужно, это типы пользователей. Реализуйте IUserType или IComplexUserType (есть еще несколько интерфейсов для удовлетворения других потребностей).

Есть несколько примеров:

Используя тип пользователя, вы можете сопоставить любой класс с любым количеством столбцов любого типа. Реализация типа пользователя означает реализацию отображения между ними.

Отображение может выглядеть следующим образом:

<property "MyColor" type="ColorUserType">
  <column name="R"/>
  <column name="G"/>
  <column name="B"/>
</property>
0 голосов
/ 11 сентября 2009

Вы можете использовать Трансформаторы . Я использовал их для собственного запроса, который преобразовывает результат в пользовательский объект. В вашем случае вы можете настроить свойства get для преобразования в ваше представление Uri и Color.

...