Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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
Fluent nhibernate Fluent NHibernate-过滤结果集_Fluent Nhibernate - Fatal编程技术网

Fluent nhibernate Fluent NHibernate-过滤结果集

Fluent nhibernate Fluent NHibernate-过滤结果集,fluent-nhibernate,Fluent Nhibernate,FNH新手问题- 我有两个对象RR和TT,定义如下: public class RR { Id Name TT_Id //corresponds to TT.Id } public class TT { Id Name Type } 我想根据以下SQL从RR中筛选记录: SELECT RR.* FROM RR LEFT OUTER JOIN TT ON RR.TT_Id = TT.Id WHERE TT.Type <> 7 选择RR

FNH新手问题-

我有两个对象RR和TT,定义如下:

public class RR
{
   Id
   Name
   TT_Id //corresponds to TT.Id
}

public class TT
{
   Id
   Name
   Type   
}
我想根据以下SQL从RR中筛选记录:

SELECT RR.*
FROM RR 
LEFT OUTER JOIN TT ON RR.TT_Id = TT.Id
WHERE TT.Type <> 7 
选择RR*
来自RR
RR.TT_Id=TT.Id上的左外连接TT
其中TT.类型7
任何人都可以请指导我如何添加过滤标准,以实现上述NH


谢谢大家!

为什么在RR中有TT Id而没有TT本身?在我看来,这将使很多事情变得比需要的更困难

如果它将引用TT,那么

resultlist = session.CreateCriteria<RR>()
    .CreateCriteria("TT")
    .Add(Restrictions.Not(Restrictions.Eq("Type", 7)))
    .List<RR>();
resultlist=session.CreateCriteria()
.CreateCriteria(“TT”)
.Add(Restrictions.Not(Restrictions.Eq(“Type”,7)))
.List();
否则

var subquery = DetachedCriteria.For<TT>()
    .Add(Restrictions.Not(Restrictions.Eq("Type", 7)))
    .SetProjection(Projections.Id());

resultlist = session.CreateCriteria<RR>()
    .Add(Subqueries.In("TT_id", subquery)))
    .List<RR>();
var subquery=DetachedCriteria.For()
.Add(Restrictions.Not(Restrictions.Eq(“Type”,7)))
.SetProjection(projects.Id());
resultlist=session.CreateCriteria()
.Add(subquerys.In(“TT_id”,subquery)))
.List();

IList resultlist=session.CreateSqlQuery(“从R.TT上的RR LEFT OUTER JOIN TT中选择RR.*,其中TT.Type为7”)
.List().Cast();
//你自己在这儿吗

为什么在RR中有TT Id而没有TT本身?在我看来,这将使很多事情变得比需要的更困难

如果它将引用TT,那么

resultlist = session.CreateCriteria<RR>()
    .CreateCriteria("TT")
    .Add(Restrictions.Not(Restrictions.Eq("Type", 7)))
    .List<RR>();
resultlist=session.CreateCriteria()
.CreateCriteria(“TT”)
.Add(Restrictions.Not(Restrictions.Eq(“Type”,7)))
.List();
否则

var subquery = DetachedCriteria.For<TT>()
    .Add(Restrictions.Not(Restrictions.Eq("Type", 7)))
    .SetProjection(Projections.Id());

resultlist = session.CreateCriteria<RR>()
    .Add(Subqueries.In("TT_id", subquery)))
    .List<RR>();
var subquery=DetachedCriteria.For()
.Add(Restrictions.Not(Restrictions.Eq(“Type”,7)))
.SetProjection(projects.Id());
resultlist=session.CreateCriteria()
.Add(subquerys.In(“TT_id”,subquery)))
.List();

IList resultlist=session.CreateSqlQuery(“从R.TT上的RR LEFT OUTER JOIN TT中选择RR.*,其中TT.Type为7”)
.List().Cast();
//你自己在这儿吗

你好,菲罗,谢谢你的回复。好的,我正在尝试使用DetachedCriteria,正如您在上面所建议的,但是得到这个错误:error-无法在以下行从'NHibernate.criteria.DetachedCriteria'转换为'object[]':criterions.Add(Restrictions.In(“TT_id”,subQuery));Herez我的代码片段:IList criterions=new List();添加(Restrictions.In(“TT_id”,子查询));IMultiCriteria c=session.CreateMultiCriteria();c、 应用策略(标准、策略、策略要素)@iniki抱歉复制粘贴错误编辑子查询限制Hi Firo,感谢您的回复。好的,我正在尝试使用DetachedCriteria,正如您在上面所建议的,但是得到这个错误:error-无法在以下行从'NHibernate.criteria.DetachedCriteria'转换为'object[]':criterions.Add(Restrictions.In(“TT_id”,subQuery));Herez我的代码片段:IList criterions=new List();添加(Restrictions.In(“TT_id”,子查询));IMultiCriteria c=session.CreateMultiCriteria();c、 应用策略(标准、策略、策略要素)@iniki抱歉复制粘贴错误已编辑对子查询的限制