我正在寻找一个不对标准添加限制的NHibernate标准。这样做的原因是我有一种方法可以将一些输入参数转换为添加到标准中的标准。存在一个输入参数的星座,其中不需要应用限制。因此,我想要返回某种虚拟标准。
在NHibernate中有类似的东西吗?
最诚挚的问候,
Oliver Hanappi
答案 0 :(得分:3)
你可以使用一个永远为空的Conjuction(它解析为“1 = 1”)。
例如
ICriterion conditionalCriteria = includeCriteria
? Restrictions.Eq("someEntity.Field", variable)
: (ICriterion) Restrictions.Conjuction();
var query = Session
.CreateCriteria<SomeEntity>("someEntity")
.Add(conditionalCriteria)
.SetResultTransformer(Transformers.AliasToBean<SomeEntity>())
.List<SomeEntity>();
答案 1 :(得分:0)
如果查询“id”为主键的实体(因此永远不能为null),您可以执行类似Restrictions.IsNotNull(“id”)的操作。根据您的要求,可以使用任何评估为无逻辑限制的内容。
答案 2 :(得分:0)
您可以根据需要添加条件,只需检查参数是否为null,如果它们不为null,则添加条件。见例:
Criteria cr = session.createCriteria(Employee.class)
cr.add(Restrictions.like("firstName", "Bob%"));
if (par_salary.IsNotNullOrEmpty())
{
cr.add(Restrictions.eq("salary", par_salary));
}
List results = cr.list();