Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nhibernate 如何处理分离的QueryOver实例?_Nhibernate_Queryover - Fatal编程技术网

Nhibernate 如何处理分离的QueryOver实例?

Nhibernate 如何处理分离的QueryOver实例?,nhibernate,queryover,Nhibernate,Queryover,这说明了如何创建分离的QueryOver查询(类似于DetachedCriteria)(使用QueryOver.Of())。然而,仔细看,我一点也不觉得类似 使用DetachedCriteria,我将创建实例并根据需要进行设置,然后调用GetExecutableCriteria(),然后分配会话并执行查询。使用“分离的”QueryOver,在调用GetExecutableQueryOver之前,大多数API都不可用(即,添加限制、连接、排序等),这需要执行一个ISession或IStateles

这说明了如何创建分离的
QueryOver
查询(类似于
DetachedCriteria
)(使用
QueryOver.Of()
)。然而,仔细看,我一点也不觉得类似

使用DetachedCriteria,我将创建实例并根据需要进行设置,然后调用
GetExecutableCriteria()
,然后分配会话并执行查询。使用“分离的”
QueryOver
,在调用
GetExecutableQueryOver
之前,大多数API都不可用(即,添加限制、连接、排序等),这需要执行一个
ISession
IStatelessSession
,此时您就不再断开连接

如何处理分离的
QueryOver
实例

编辑:

实际问题与我如何存储分离的QueryOver实例有关:

public class CriteriaQuery<T>
{
    internal protected QueryOver<T> _QueryOver { get; set; }

    public CriteriaQuery()
    {
        _QueryOver = QueryOver.Of<T>();
    }

    // Snip
}
公共类标准查询
{
内部保护QueryOver _QueryOver{get;set;}
公共标准查询()
{
_QueryOver=QueryOver.Of();
}
//剪断
}

我使用的是NHibernate 3.1.0.4000,它应该是一个
查询版本。以下代码已成功编译:

Employee salesRepAlias = null;

var query = QueryOver.Of<Customer>()
    .JoinAlias(x => x.SalesRep, () => salesRepAlias)
    .Where(x => x.LastName == "Smith")
    .Where(() => salesRepAlias.Office.Id == 23)
    .OrderBy(x => x.LastName).Asc
    .ThenBy(x => x.FirstName).Asc;

return query.GetExecutableQueryOver(session)
    .List();
Employee salesRepAlias=null;
var query=QueryOver.Of()
.JoinAlias(x=>x.SalesRep,()=>salesRepAlias)
.Where(x=>x.LastName==“Smith”)
.Where(()=>salesRepAlias.Office.Id==23)
.OrderBy(x=>x.LastName).Asc
.ThenBy(x=>x.FirstName).Asc;
return query.GetExecutableQueryOver(会话)
.List();
这说明了如何在分离的查询上使用限制、联接和排序,就像使用常规查询一样


您能否发布演示不可用的API功能的代码?

选择您的答案并将实际问题添加到问题中,因为您的帖子将我推向了问题的方向。谢谢。您在下面提到的实际问题是什么?
QueryOver
没有我期望的API
QueryOver
是我所需要的。