NHibernate包括/排除所有

NHibernate包括/排除所有,nhibernate,criteria,Nhibernate,Criteria,我正在构建一个复杂的安全机制,根据各种权限过滤对对象的访问 作为其中的一部分,我希望在我的查询中有一个初始的或,在权限允许访问某些子集之前,排除查询中所有可能的结果。在SQL中,它将如下所示: select * from Table where (1 = 0) or ( /* various predicates */ ) 但是,我不确定如何通过CriteriaAPI创建初始1=0。我可能也需要在某个时候创建1=1,但我假设这将是一个类似的任务 如何做到这一点?建

我正在构建一个复杂的安全机制,根据各种权限过滤对对象的访问

作为其中的一部分,我希望在我的查询中有一个初始的
,在权限允许访问某些子集之前,排除查询中所有可能的结果。在SQL中,它将如下所示:

select   *
from     Table
where    (1 = 0)
or       ( /* various predicates */ )
但是,我不确定如何通过CriteriaAPI创建初始
1=0
。我可能也需要在某个时候创建
1=1
,但我假设这将是一个类似的任务

如何做到这一点?

建议使用简单明了的方法:

var stuff = session.CreateCriteria<Stuff>()
    .Add(Restrictions.Eq(Projections.Constant(1), 0))
    .List<Stuff>();
var stuff=session.CreateCriteria()
.添加(限制。等式(投影。常数(1),0))
.List();

最初的想法是,我可能必须实现我自己的标准,我现在正在研究。您可能想研究Rhino安全性,它似乎涵盖了您试图实现的目标。是的,我们用它作为灵感,但我们需要一些足够不同的东西来编写我们自己的。但若你们用add()添加更多的条件,它们实际上会用1=0,是的,但你们会用析取或类似的方法。我只是在演示实现消除所有结果的标准的技术。