Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
Sql Nhibernate左联接中的多个条件_Sql_Nhibernate - Fatal编程技术网

Sql Nhibernate左联接中的多个条件

Sql Nhibernate左联接中的多个条件,sql,nhibernate,Sql,Nhibernate,将此sql查询转换为nhibernate需要一些帮助 select a.ID, count(b.ID) from appusers a left join weeklytasks b on a.ID = b.TaskOwner and b.taskstatus = 1 group by a.ID 如果不知道您的实体、映射和使用的技术(icretriaapi、QueryOver、Linq),很难回答这个问题 但我可以使用QueryOver建议此解决方案: AppU

将此sql查询转换为nhibernate需要一些帮助

select     a.ID, count(b.ID)
from       appusers    a
left join  weeklytasks b on a.ID = b.TaskOwner and b.taskstatus = 1
group by   a.ID

如果不知道您的实体、映射和使用的技术(icretriaapi、QueryOver、Linq),很难回答这个问题

但我可以使用QueryOver建议此解决方案:

AppUser ownerAlias = null;
WeeklyTask taskAlias = null;
var result = Session.QueryOver(() => taskAlias)
                .JoinAlias(x => x.TaskOwner, 
                           () => ownerAlias,
                           NHibernate.SqlCommand.JoinType.RightOuterJoin,
                           Restrictions.Where(() => taskAlias.Status == 1))
                .SelectList(list => list
                    .SelectGroup(x => ownerAlias.Id)
                    .SelectCount(x => x.Id))
                .List<object[]>();
AppUser-ownerAlias=null;
WeeklyTask taskAlias=null;
var result=Session.QueryOver(()=>taskAlias)
.JoinAlias(x=>x.TaskOwner,
()=>ownerAlias,
NHibernate.SqlCommand.JoinType.RightOuterJoin,
限制。其中(()=>taskAlias.Status==1))
.SelectList(list=>list
.SelectGroup(x=>ownerAlias.Id)
.SelectCount(x=>x.Id))
.List();
或者这个:

var result = Session.QueryOver<WeeklyTask>()
                .Where(x => x.Status == 1)
                .Right.JoinQueryOver(x => x.TaskOwner)
                .SelectList(list => list
                    .SelectGroup(x => x.TaskOwner.Id)
                    .SelectCount(x => x.Id))
                .List<object[]>();
var result=Session.QueryOver()
.其中(x=>x.状态==1)
.Right.JoinQueryOver(x=>x.TaskOwner)
.SelectList(list=>list
.SelectGroup(x=>x.TaskOwner.Id)
.SelectCount(x=>x.Id))
.List();

请注意,在这种方法中,您的
周任务
实体必须包含对
AppUser
实体的映射引用。

如果不知道您的实体、映射、使用的技术(ICretria API、QueryOver、Linq),很难回答

但我可以使用QueryOver建议此解决方案:

AppUser ownerAlias = null;
WeeklyTask taskAlias = null;
var result = Session.QueryOver(() => taskAlias)
                .JoinAlias(x => x.TaskOwner, 
                           () => ownerAlias,
                           NHibernate.SqlCommand.JoinType.RightOuterJoin,
                           Restrictions.Where(() => taskAlias.Status == 1))
                .SelectList(list => list
                    .SelectGroup(x => ownerAlias.Id)
                    .SelectCount(x => x.Id))
                .List<object[]>();
AppUser-ownerAlias=null;
WeeklyTask taskAlias=null;
var result=Session.QueryOver(()=>taskAlias)
.JoinAlias(x=>x.TaskOwner,
()=>ownerAlias,
NHibernate.SqlCommand.JoinType.RightOuterJoin,
限制。其中(()=>taskAlias.Status==1))
.SelectList(list=>list
.SelectGroup(x=>ownerAlias.Id)
.SelectCount(x=>x.Id))
.List();
或者这个:

var result = Session.QueryOver<WeeklyTask>()
                .Where(x => x.Status == 1)
                .Right.JoinQueryOver(x => x.TaskOwner)
                .SelectList(list => list
                    .SelectGroup(x => x.TaskOwner.Id)
                    .SelectCount(x => x.Id))
                .List<object[]>();
var result=Session.QueryOver()
.其中(x=>x.状态==1)
.Right.JoinQueryOver(x=>x.TaskOwner)
.SelectList(list=>list
.SelectGroup(x=>x.TaskOwner.Id)
.SelectCount(x=>x.Id))
.List();
请注意,在这种方法中,
WeeklyTask
实体必须包含对
AppUser
实体的映射引用