hac*_*sid 6 c# nhibernate iusertype
如何在NHibernate中针对自定义IUserType字段构造查询?
更具体地说:我正在研究棕地应用程序.我在数据库中有一个名为"State"的字段,其中包含一个表示给定对象所处状态的char.
在我的代码中,我希望将其表示为枚举,因此我创建了一个带有每个状态值的枚举,并创建了一个IUserType,它将db的char值转换为我的枚举,然后返回选择和更新.
我想构建一个看起来像这样的查询:
session.CreateCriteria<MyType>().Add(Expression.Eq("State", StateEnum.Complete))
Run Code Online (Sandbox Code Playgroud)
但是,该查询会引发异常:
could not resolve property: State of: MyNamespace.MyType
Run Code Online (Sandbox Code Playgroud)
大概是因为NHibernate不知道如何在给定StateEnum类型的情况下对DB的char字段进行选择.
您的类和映射应该类似于以下内容:
class MyType
{
public virtual StateEnum State { get; set; }
}
<class name="MyType">
<property name="State" type="MyNamespace.MyEnumUserType, MyDll" />
</class>
Run Code Online (Sandbox Code Playgroud)
NHibernate有3个用于枚举的内置映射器:
(char) (int) enumvalue.