Hi,

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<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CImpl%5CExpressionProcessor.cs%3F280%3F1>
at NHibernate.Impl.ExpressionProcessor.IsMemberExpression(Expression 
expression) in 
c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: 
line 
335<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CImpl%5CExpressionProcessor.cs%3F335%3F1>
at NHibernate.Impl.ExpressionProcessor.FindMemberProjection(Expression 
expression) in 
c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: 
line 
166<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CImpl%5CExpressionProcessor.cs%3F166%3F1>
at NHibernate.Impl.ExpressionProcessor.ProcessSimpleExpression(Expression 
left, Expression right, ExpressionType nodeType) in 
c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: 
line 
411<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CImpl%5CExpressionProcessor.cs%3F411%3F1>
at NHibernate.Impl.ExpressionProcessor.ProcessBinaryExpression(
BinaryExpression expression) in 
c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: 
line 
503<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CImpl%5CExpressionProcessor.cs%3F503%3F1>
at NHibernate.Impl.ExpressionProcessor.ProcessAndExpression(BinaryExpression 
expression) in 
c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: 
line 
470<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CImpl%5CExpressionProcessor.cs%3F470%3F1>
at NHibernate.Impl.ExpressionProcessor.ProcessBinaryExpression(
BinaryExpression expression) in 
c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: 
line 
506<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CImpl%5CExpressionProcessor.cs%3F506%3F1>
at NHibernate.Impl.ExpressionProcessor.ProcessExpression(Expression`1 
expression) in 
c:\sandbox\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: 
line 
595<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CImpl%5CExpressionProcessor.cs%3F595%3F1>
at NHibernate.Criterion.QueryOver`2.Add(Expression`1 expression) in 
c:\sandbox\nhibernate\src\NHibernate\Criterion\QueryOver.cs: 
line 
749<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CCriterion%5CQueryOver.cs%3F749%3F1>
at NHibernate.Criterion.QueryOver`2.Where(Expression`1 expression) in 
c:\sandbox\nhibernate\src\NHibernate\Criterion\QueryOver.cs: 
line 
357<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CCriterion%5CQueryOver.cs%3F357%3F1>
at NHibernate.Criterion.QueryOver`2.NHibernate.IQueryOver<TRoot,TSubType>.
Where(Expression`1 expression) in 
c:\sandbox\nhibernate\src\NHibernate\Criterion\QueryOver.cs: 
line 
800<about:file%3Ac%3A%5Csandbox%5Cnhibernate%5Csrc%5CNHibernate%5CCriterion%5CQueryOver.cs%3F800%3F1>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to