我有几个ICriterion实例,我根据用户输入以各种方式(连接,分离等)组合。我在创建基于匹配关联集合中的值的ICriterion时遇到了问题。
例如,给定Orders和OrderItems之间的一对多关系,我希望能够创建一个ICriterion来选择具有Quantity> OrderItem的所有订单。 100.
我尝试了几件事,但还没有发现任何可行的东西。
答案 0 :(得分:1)
我在项目中遇到了同样的问题。每个过滤的集合需要一对别名和标准。
KeyValuePair<string, ICriterion[]> collectionfilters = GetFromSomeWhere();
foreach (var association in collectionfilters)
{
criteria.CreateAlias(association.Key, association.Key);
foreach(var crit in association.Value)
{
criteria.Add(crit);
}
}
// example
KeyValuePair<string, ICriterion[]> GetFromSomeWhere()
{
return new KeyValuePair<string, ICriterion[]>("OrderItems", new []{ Restrictions.Gt("OrderItems.Quantity", 100) });
}