Я использую ServiceStack Ormlite. Мой код любит это:Почему я могу получить ошибку «переменная, ссылающаяся на область видимости, но не определенную» из Ormlite на .net, но она хорошо работает на Mono?
var number = _conn.Count<Lot>(lot => lot.Labels.Contains("lookingString"));
Моя проблема в том, что код работает хорошо на Mono, но получаю ошибку из .Net Framework:
Message: [InvalidOperationException: variable 'lot' of type 'pM.Models.Entity.Lot' referenced from scope '', but it is not defined] System.Linq.Expressions.Compiler.VariableBinder.Reference(ParameterExpression node, VariableStorageKind storage):142 System.Linq.Expressions.Compiler.VariableBinder.VisitParameter(ParameterExpression node):10 System.Linq.Expressions.Compiler.VariableBinder.VisitUnary(UnaryExpression node):59 System.Linq.Expressions.ExpressionVisitor.VisitMember(MemberExpression node):13 System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node):12 System.Linq.Expressions.ExpressionVisitor.Visit(ReadOnlyCollection`1 nodes):26 System.Linq.Expressions.Compiler.VariableBinder.VisitLambda[T](Expression`1 node):88 System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda, DebugInfoGenerator debugInfoGenerator):0 ServiceStack.OrmLite.SqlExpression`1.VisitMethodCall(MethodCallExpression m):87 ServiceStack.OrmLite.SqlExpression`1.VisitBinary(BinaryExpression b):135 ServiceStack.OrmLite.SqlExpression`1.Where(Expression`1 predicate):12 ServiceStack.OrmLite.ReadExpressionCommandExtensions.Scalar[T,TKey](IDbCommand dbCmd, Expression`1 field, Expression`1 predicate):26 ServiceStack.OrmLite.OrmLiteExecFilter.Exec[T](IDbConnection dbConn, Func`2 filter):16 pM.Api.LabelReadHelper.GetUsage[T](String labelName) in c:\TeamCity\buildAgent\work\b85b83a981467d5b\pM.Api\Common\Labels\Template\LabelReadHelper.cs:23
на Mono, LastSql так:
SELECT COUNT(*) FROM `Lot` WHERE (upper(`Labels`) like '%lookingString%' AND (`CustomerId` = 'a54f02ee-cc74-4b4d-845d-6db2efb1f5dc'));
Моя версия ServiceStack.Ormlite 4.0.0.
Содержит ли метод Contains между платформой разные?
Пожалуйста, смотрите код на: http://gistlyn.com/?gist=cbf0ced50b86c9881d5178d39d613cda&collection=74d7b0467a197f678bb4220b2c301ac3 –