c# – 如何在linq-to-Nhibernate中使用多个条件的连接
发布时间:2020-12-15 04:10:54 所属栏目:百科 来源:网络整理
导读:我有两个课程(请求和请求细节).我需要一个 Linq到NHibernatequery之间的两个类之间加入. var q = SessionInstance.QueryRequest() .Where(x = x.State == "Init");var q2 = SessionInstance.QueryRequestDetail();q2 = q2.Where(xx = xx.Purpose.Contains("P
我有两个课程(请求和请求细节).我需要一个
Linq到NHibernatequery之间的两个类之间加入.
var q = SessionInstance.Query<Request>() .Where(x => x.State == "Init"); var q2 = SessionInstance.Query<RequestDetail>(); q2 = q2.Where(xx => xx.Purpose.Contains("Purpose Sample")); // This line has a error When execution ??`q.ToList()?` q = q.Join(q2,request => request.Id,detail => detail.Id,(request,detail) => request); return q.ToList(); 当我向q2添加Where条件时,Result有一个运行时错误.异常消息是:不支持指定的方法. 堆栈跟踪 : at NHibernate.Hql.Ast.ANTLR.PolymorphicQuerySourceDetector.GetClassName(IASTNode querySource) at NHibernate.Hql.Ast.ANTLR.PolymorphicQuerySourceDetector.Process(IASTNode tree) at NHibernate.Hql.Ast.ANTLR.AstPolymorphicProcessor.Process() at NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(IASTNode ast,String queryIdentifier,String collectionRole,Boolean shallow,IDictionary`2 filters,ISessionFactoryImplementor factory) at NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String queryIdentifier,IQueryExpression queryExpression,ISessionFactoryImplementor factory) at NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression queryExpression,IDictionary`2 enabledFilters) at NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(IQueryExpression queryExpression,Boolean shallow) at NHibernate.Impl.AbstractSessionImpl.CreateQuery(IQueryExpression queryExpression) at NHibernate.Linq.NhQueryProvider.PrepareQuery(Expression expression,IQuery& query,NhLinqExpression& nhQuery) at NHibernate.Linq.NhQueryProvider.Execute[TResult](Expression expression) at Remotion.Data.Linq.QueryableBase`1.GetEnumerator() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 为什么? 解决方法
这可能是一个bug.
以下是您的问题的解决方法: var q = (from request in session.Query<Request>() join detail in session.Query<RequestDetail>() on request.Id equals detail.Id where request.State == "Init" && detail.Purpose.Contains("Purpose Sample") select request).ToList(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |