Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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
C# 带子查询的Nhibernate准则_C#_Sql_Hibernate_Nhibernate - Fatal编程技术网

C# 带子查询的Nhibernate准则

C# 带子查询的Nhibernate准则,c#,sql,hibernate,nhibernate,C#,Sql,Hibernate,Nhibernate,我想帮助使用critera api在nhibernate中创建此查询(从sql中删除不必要的部分): 我当前的解决方案使用“内部联接”,但我希望避免使用它,并使用上面sql中的“in-select”。“GroupID”是c#中的ID列表 var critiera=\u session.CreateCriteria(); CreateCriteria(“Access”,NHibernate.SqlCommand.JoinType.InnerJoin).Add(NHibernate.criteria

我想帮助使用critera api在nhibernate中创建此查询(从sql中删除不必要的部分):

我当前的解决方案使用“内部联接”,但我希望避免使用它,并使用上面sql中的“in-select”。“GroupID”是c#中的ID列表

var critiera=\u session.CreateCriteria();
CreateCriteria(“Access”,NHibernate.SqlCommand.JoinType.InnerJoin).Add(NHibernate.criteria.Restrictions.In(“Group.Id”,groupid));
解决方法如下:

DetachedCriteria subQuery = DetachedCriteria.For<A>("Access")
                .Add(NHibernate.Criterion.Restrictions.In("Access.Group.Id", SmartContext.Current.GetGroupIds(Session).ToList())).SetProjection(Projections.Property("Access.Resource.Id"));

criteria.Add(Subqueries.PropertyIn("Id", subQuery));
DetachedCriteria子查询=DetachedCriteria.For(“访问”)
.Add(NHibernate.criteria.Restrictions.In(“Access.Group.Id”,SmartContext.Current.GetGroupIds(Session.ToList())).SetProjection(Projections.Property(“Access.Resource.Id”);
添加(subquerys.PropertyIn(“Id”,subQuery));
var critiera = _session.CreateCriteria<H>();
criteria.CreateCriteria("Access", NHibernate.SqlCommand.JoinType.InnerJoin).Add(NHibernate.Criterion.Restrictions.In("Group.Id", groupIds));
DetachedCriteria subQuery = DetachedCriteria.For<A>("Access")
                .Add(NHibernate.Criterion.Restrictions.In("Access.Group.Id", SmartContext.Current.GetGroupIds(Session).ToList())).SetProjection(Projections.Property("Access.Resource.Id"));

criteria.Add(Subqueries.PropertyIn("Id", subQuery));