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

时间:2010-09-20 08:05:10

标签: nhibernate enums criteria-api

我有一个实体,其字段类型为enum,在我的数据库中保存为整数。

使用ICriteria从数据库中检索对象时,我希望将结果限制为那些字段是枚举值集合成员的结果。 Restrictions.In是否使用枚举集合?

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

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

FindAll是一个封装

的方法
criteria.GetExecutableCriteria(Session).List<MyType>()

1 个答案:

答案 0 :(得分:0)

我最初的猜测是你需要与枚举成员的整数值进行比较(假设你将枚举映射为整数);所以像:

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

可能是您追求的解决方案。如果您使用更多详细信息(枚举成员的映射和查询生成的sql)更新您的帖子,我可以提供进一步的帮助。