Nhibernate Icriteria枚举标志(位掩码)支持

Nhibernate Icriteria枚举标志(位掩码)支持,nhibernate,Nhibernate,[旗帜] 此枚举的有效值: 1-网页 2-销售页 3-主页,销售页面 4-通讯 5-网页、通讯 6-销售页、时事通讯 7-主页、销售页、时事通讯 我想写一个标准,返回主页上的所有产品。 在c#中检查它非常简单: if((我的参数&ShowProductOn.HomePage)=ShowProductOn.HomePage) 在Sql中,它也非常简单: 声明@BitMask int=3 如果((@BitMask&1)=1) 开始 结束 这是我写的NH标准,用于返回主页上的所有产品(应匹配1 | 3

[旗帜]

此枚举的有效值:

1-网页

2-销售页

3-主页,销售页面

4-通讯

5-网页、通讯

6-销售页、时事通讯

7-主页、销售页、时事通讯

我想写一个标准,返回主页上的所有产品。 在c#中检查它非常简单:

if((我的参数&ShowProductOn.HomePage)=ShowProductOn.HomePage)

在Sql中,它也非常简单:

声明@BitMask int=3

如果((@BitMask&1)=1)

开始

结束

这是我写的NH标准,用于返回主页上的所有产品(应匹配1 | 3 | 5 | 7):

ICriteria criteria=NHibernateSession.CreateCriteria() .Add(Restrictions.Eq(“ShowProductOn”,ShowProductOn.HomePage))

此条件仅返回“ShowProductOn”=1的项,但忽略其他匹配的“ShowProductOn”=3 | 5 | 7的项

有人知道ICriteria/HQL语法来编写一个条件,该条件将返回“ShowProductOn”=1 | 3 | 5 | 7的所有项吗

Shay.

这可能有用


我解决了这个问题,将标志枚举映射到字符串类型,然后使用限制。如查询值:

属性定义:

Print('Yes')
属性映射(使用hbm.xml文件)

希望这有帮助

Console.WriteLine("Yes");
Print('Yes')
public virtual DaysOfWeek Weekdays {
  get { return (DaysOfWeek)System.Enum.Parse(typeof(DaysOfWeek), _weekdays); }
  set { _weekdays = value.ToString(); }
}
private string _weekdays = "All";
<property name="Weekdays" column="WEEKDAYS" access="field.camelcase-underscore" not-null="false" />
Restrictions.Like("Weekdays", ConvertToDaysOfWeek(time.DayOfWeek).ToString(), MatchMode.Anywhere);