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.