什么类型的会话.queryover回报

本文关键字:queryover 回报 会话 类型 什么 | 更新日期: 2023-09-27 18:07:26

我正在查看一些用于nhibernate的代码,其中我基于几个条件应用where子句。像这样:

var query = session.QueryOver<Client>().Where(x => x.IsDeleted == false);
if (status == "active")
   query.Where(x => x.IsActive == true);

这里没有问题,我可以说:query.where(xxx)

但是当我把它改成:

IQueryOver query = session.QueryOver<Client>().Where(x => x.IsDeleted == false);
if (status == "active")
    //squiggly red lines on the line below!!!
    query.Where(x => x.IsActive == true);

我的query.where(xxxx)if下得到红色的弯曲线。我检查了session.QueryOver的返回类型,它返回IQueryOver类型,为什么它会抱怨?

是因为我试图使接口类型的查询对象,当它应该是实现接口的具体类?

什么类型的会话.queryover回报

这是如何使用QueryOver处理动态查询:

var query = session.QueryOver<Client>()
    .Where(x => x.IsDeleted == false);
if (status == "active")
   query = query.Where(x => x.IsActive == true);
var clients = query.List(); // To execute the query and get the result (root entity)