我如何可以构造一种查询一个自定义IUserType场原则才能享受它的全部好处?

更具体地说:我工作上的一个污染土地的应用程序。我有一个领域中的数据库被称为"国家",其中包含一个char代表什么状态给定的对象。

在我的代码,我想这会表示作为一个枚举,所以我已经创建了一个枚举,值的每个国家,并创建了一个IUserType转换,从数据库的炭价值我的枚举和回用于选择和更新。

我想建成一个查询,看起来是这样的:

session.CreateCriteria<MyType>().Add(Expression.Eq("State", StateEnum.Complete))

然而,这一查询将引发一个例外:

could not resolve property: State of: MyNamespace.MyType

大概是因为它能够不知道如何做一个选择对数据库的炭领域给予StateEnum类型。

有帮助吗?

解决方案

你的类和映射应该是这样的如下:

class MyType
{
    public virtual StateEnum State { get; set; }
}

<class name="MyType">
    <property name="State" type="MyNamespace.MyEnumUserType, MyDll" />
</class>

它能够有3个建立在映射器用于枚举:

  • PersistentEnumType 地图int列,并不是宣称的映射。
  • EnumStringType 地图varchar列。值ToString()值的枚举。
  • EnumCharType 地图char列。值的结果 (char) (int) enumvalue.
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top