Как я могу создать запрос против пользовательского поля IUserType в NHibernate?
Более конкретно: я работаю над приложением существующих производств. У меня есть поле в базе данных, названной "состоянием", которое содержит представление символа, что указывает, что данный объект находится в.
В моем коде я хочу, чтобы это было представлено как перечисление, таким образом, я создал перечисление со значением для каждого состояния и создал IUserType, который преобразовывает от значения символа дб до моего перечисления и назад для выборов и обновлений.
Я хочу создать запрос, который выглядит примерно так:
session.CreateCriteria<MyType>().Add(Expression.Eq("State", StateEnum.Complete))
Однако тот запрос выдает исключение:
could not resolve property: State of: MyNamespace.MyType
по-видимому, потому что NHibernate не знает, как сделать выбор против символьного поля DB, учитывая тип StateEnum.
Ваш класс и отображение должны быть примерно такими:
class MyType
{
public virtual StateEnum State { get; set; }
}
<class name="MyType">
<property name="State" type="MyNamespace.MyEnumUserType, MyDll" />
</class>
NHibernate имеет 3 встроенных средства отображения для enum:
(char) (int) enumvalue
.