首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NHibernate中构造针对IUserType的查询

在NHibernate中构造针对IUserType的查询
EN

Stack Overflow用户
提问于 2010-03-03 06:32:51
回答 1查看 913关注 0票数 6

如何在NHibernate中构造针对自定义IUserType字段的查询?

更具体地说:我正在开发一个棕地应用程序。我在数据库中有一个名为" state“的字段,其中包含一个字符,表示给定对象所处的状态。

在我的代码中,我希望将其表示为枚举,因此我为每个状态创建了一个枚举,并创建了一个IUserType,它将数据库的字符值转换为我的枚举,然后再转换回来进行选择和更新。

我想构造一个查询,如下所示:

代码语言:javascript
复制
session.CreateCriteria<MyType>().Add(Expression.Eq("State", StateEnum.Complete))

但是,该查询会抛出一个异常:

代码语言:javascript
复制
could not resolve property: State of: MyNamespace.MyType

大概是因为NHibernate不知道如何在给定StateEnum类型的情况下对DB的char字段执行select操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-08 16:09:57

您的类和映射应该类似于以下内容:

代码语言:javascript
复制
class MyType
{
    public virtual StateEnum State { get; set; }
}

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

NHibernate有3个用于枚举的内置映射器:

  • PersistentEnumType映射到一个int列,并且没有在映射到varchar列的mapping.
  • EnumStringType中声明。这些值是映射到字符列的enum.
  • EnumCharType的ToString()值。这些值是(char) (int) enumvalue.

的结果

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2367375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档