0

我有一个实体,具有枚举类型的字段,在我的数据库中以整数形式保存。

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

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

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

FindAll 是一个封装方法

criteria.GetExecutableCriteria(Session).List<MyType>()
4

1 回答 1

0

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

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

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

于 2010-09-20T15:22:56.947 回答