Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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_Nhibernate Projections - Fatal编程技术网

如何在nhibernate queryover中执行此操作

如何在nhibernate queryover中执行此操作,nhibernate,queryover,nhibernate-projections,Nhibernate,Queryover,Nhibernate Projections,我需要在nhibernate QueryOver中执行此操作: select distinct sc.* from [Security].[Commands] sc inner join [Security].[SystemSubjects] ss on ss.Id = sc.Id left outer join [Security].[SystemSubjectRoles] ssr on ssr.SystemSubjectId = ss.Id left outer join [Security

我需要在nhibernate QueryOver中执行此操作:

select distinct sc.* from [Security].[Commands] sc
inner join [Security].[SystemSubjects] ss on ss.Id = sc.Id
left outer join [Security].[SystemSubjectRoles] ssr on ssr.SystemSubjectId = ss.Id
left outer join [Security].[Roles] sr on sr.Id = ssr.RoleId
left outer join [Security].[UserRoles] ur on ur.IdRole = sr.Id 
left outer join [Security].[User] su2 on su2.Id = ur.IdUser
left outer join [Security].SystemSubjectUsers ssu on ssu.SystemSubjectId = ss.Id
left outer join [Security].[User] su on su.Id = ssu.UserId
where (su2.Id = 1 or su.Id = 1)
到目前为止,我已经做到了:

var queryOverRoles = QueryOver.Of<Command>(() => cmdAlias)
            .JoinAlias(() => cmdAlias.SystemSubjectRoles, () => ssRoleAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => ssRoleAlias.Role, () => roleAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => roleAlias.Users, () => userAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => cmdAlias.SystemSubjectUsers, () => ssUserAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => ssUserAlias.User, () => userAlias2, JoinType.LeftOuterJoin)
            .TransformUsing(Transformers.DistinctRootEntity)
            .Where(() => ssRoleAlias.SecurityPermission == SecurityPermission.Allow)
            .And(() => (userAlias.Id == userId || userAlias2.Id == userId))
它抛出以下异常:

从x源=NHibernate
堆栈跟踪: 在NHibernate.Impl.ExpressionProcessor.FindMemberExpression(表达式 表达)在 d:\CSharp\NH\nhibernate\src\nhibernate\Impl\ExpressionProcessor.cs:line 189 在NHibernate.criteria.QueryOver
2.选择(表达式
1[] 预测)在 d:\CSharp\NH\nhibernate\src\nhibernate\criteria\QueryOver.cs:line 363 位于Novatec.Persistence.Repositories.Implementations.UserRepository.GetAllowedUserCommands(Int32 用户ID)在 C:\Projects\EGrad\Main\Source\Novatec.E-Grad\Source\Novatec.Persistence\Repositories\Implementations\UserRepository.cs:line 140 位于Novatec.Administracija.Services.Security.SecurityManager.AuthorizeUserAction(Int32 用户ID,字符串commandId)在 C:\Projects\EGrad\Main\Source\Novatec.E-Grad\Source\Novatec.Administracija.Services\Security\SecurityManager.cs:line 48 位于Novatec.Framework.Infrastructure.Services.ServiceBase.ExecuteCommand(Int32 userId、字符串appId、ICommand 命令)在 C:\Projects\EGrad\Main\Source\Novatec.E-Grad\Source\Novatec.Framework.Infrastructure\Services\ServiceBase.cs:line 94.例外情况:


试试这个。。。。您需要指定要选择的别名。 选择(结果=>cmdAlias)

queryOverRole.Select(x=>x);
System.Exception was caught   Message=Could not determine member