|
From: Richard B. (JIRA) <nh...@gm...> - 2011-05-26 14:41:59
|
[ http://216.121.112.228/browse/NH-2733?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=21202#action_21202 ]
Richard Brown commented on NH-2733:
-----------------------------------
Cheers, thanks for the update.
> Using an expression in QueryOver gives: Lambda Parameter not in scope
> ---------------------------------------------------------------------
>
> Key: NH-2733
> URL: http://216.121.112.228/browse/NH-2733
> Project: NHibernate
> Issue Type: Bug
> Components: QueryOver
> Affects Versions: 3.2.0CR1
> Reporter: Roy Jacobs
> Assignee: Richard Brown
> Priority: Major
> Fix For: 3.2.0CR1
>
> Attachments: NH2733.zip
>
>
> Among other things we occasionally use an IExpression in a QueryOver 'where', like so:
> query.Where(expression);
> This used to work quite well in the SVN trunk version of last week, but since then this starts breaking with an ArgumentException saying "Lambda Parameter not in scope".
> Now, I've seen that QueryOver got a bit of work done to support things like YearPart etc., so I'm assuming these changes are related.
> The expression is constructed like this:
> public Expression<Func<Item, bool>> GetExpression(DateTime? myStartDate, DateTime? myStopDate)
> {
> return item => item.StartDateTime < myStopDate.Value && item.StartDateTime >= myStartDate.Value;
> }
> The call-stack (copy/pasted from R# test runner) looks like this:
> --InvalidOperationException
> at System.Linq.Expressions.ExpressionCompiler.GenerateParameterAccess(ILGenerator gen, ParameterExpression p, StackType ask)
> at System.Linq.Expressions.ExpressionCompiler.Generate(ILGenerator gen, Expression node, StackType ask)
> at System.Linq.Expressions.ExpressionCompiler.GenerateMemberAccess(ILGenerator gen, Expression expression, MemberInfo member, StackType ask)
> at System.Linq.Expressions.ExpressionCompiler.Generate(ILGenerator gen, Expression node, StackType ask)
> at System.Linq.Expressions.ExpressionCompiler.GenerateLambda(LambdaExpression lambda)
> at System.Linq.Expressions.ExpressionCompiler.CompileDynamicLambda(LambdaExpression lambda)
> at System.Linq.Expressions.LambdaExpression.Compile()
> at NHibernate.Impl.ExpressionProcessor.EvaluatesToNull(Expression expression) in c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: line 280
> at NHibernate.Impl.ExpressionProcessor.IsMemberExpression(Expression expression) in c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: line 335
> at NHibernate.Impl.ExpressionProcessor.FindMemberProjection(Expression expression) in c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: line 166
> at NHibernate.Impl.ExpressionProcessor.ProcessSimpleExpression(Expression left, Expression right, ExpressionType nodeType) in c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: line 411
> at NHibernate.Impl.ExpressionProcessor.ProcessBinaryExpression(BinaryExpression expression) in c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: line 503
> at NHibernate.Impl.ExpressionProcessor.ProcessAndExpression(BinaryExpression expression) in c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: line 470
> at NHibernate.Impl.ExpressionProcessor.ProcessBinaryExpression(BinaryExpression expression) in c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: line 506
> at NHibernate.Impl.ExpressionProcessor.ProcessExpression(Expression`1 expression) in c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: line 595
> at NHibernate.Criterion.QueryOver`2.Add(Expression`1 expression) in c:\sandbox\nhibernate\src\NHibernate\Criterion\QueryOver.cs: line 749
> at NHibernate.Criterion.QueryOver`2.Where(Expression`1 expression) in c:\sandbox\nhibernate\src\NHibernate\Criterion\QueryOver.cs: line 357
> at NHibernate.Criterion.QueryOver`2.NHibernate.IQueryOver<TRoot,TSubType>.Where(Expression`1 expression) in c:\sandbox\nhibernate\src\NHibernate\Criterion\QueryOver.cs: line 800
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://216.121.112.228/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
|