根据枚举限制使用ICriteria的NHibernate查询

根据枚举限制使用ICriteria的NHibernate查询,nhibernate,enums,criteria-api,Nhibernate,Enums,Criteria Api,我有一个实体,其字段类型为enum,在数据库中作为整数持久化 当使用ICriteria从数据库检索对象时,我希望将结果限制为字段是枚举值集合成员的结果。使用枚举集合时是否存在限制 以下方法不起作用。我是否必须在查询的“restrictions.in”部分执行类似类型转换的操作 var myEnumCollection = new MyEnum[] { MyEnum.One }; return FindAll<MyType>(Restrictions.In("EnumProperty"

我有一个实体,其字段类型为enum,在数据库中作为整数持久化

当使用ICriteria从数据库检索对象时,我希望将结果限制为字段是枚举值集合成员的结果。使用枚举集合时是否存在限制

以下方法不起作用。我是否必须在查询的“restrictions.in”部分执行类似类型转换的操作

var myEnumCollection = new MyEnum[] { MyEnum.One };
return FindAll<MyType>(Restrictions.In("EnumProperty", myEnumCollection));
var myEnumCollection=new MyEnum[]{MyEnum.One};
返回FindAll(Restrictions.In(“EnumProperty”,myEnumCollection));
FindAll是一种封装

criteria.GetExecutableCriteria(Session).List<MyType>()
criteria.GetExecutableCriteria(会话).List()

我的初步猜测是,您需要与枚举成员的整数值进行比较(假设您将枚举映射为整数);比如:

var myEnumCollection = new int[] { MyEnum.One }; 
return FindAll<MyType>(Restrictions.In("EnumProperty", myEnumCollection));
var myEnumCollection=newint[]{MyEnum.One};
返回FindAll(Restrictions.In(“EnumProperty”,myEnumCollection));

也许是你想要的解决方案。如果您使用更多详细信息(enum成员和查询生成的sql的映射)更新帖子,我可能能够提供进一步的帮助。

以下几点可能有助于您在此处找到答案…1)发布enum属性的映射,2)发布此critiera查询生成的结果sql。我遇到了与您相同的问题(我已将枚举转换为int,但仍然收到一个错误,上面写着“无法使用无表达式的集合”。由于这是一个非常老的问题,我想知道您是否找到了解决方案?谢谢