I've also come across this same problem with DbLinq and very slow
MySQL queries. You'll see a list of ArgumentExceptions thrown before
the query is executed and it can take up to 8-10 seconds to execute.

  Here is a work-around fix for the issue:

1. Download the latest SVN code for DbLinq at
http://code.google.com/p/dblinq2007/source/checkout

2. Open the following file for editing in Visual Studio 2008 DBLinq\src
\DbLinq\Data\Linq\Sugar\Implementation\ExpressionOptimizer.cs

3. On line 78, the problem manifests itself when attempting to
evaluate the lambda expression. Change the function AnalyzeConstant()
as follows:

        protected virtual Expression AnalyzeConstant(Expression
expression, BuilderContext builderContext)
        {
            // we try to find a non-constant operand, and if we do, we
won't change this expression
            foreach (var operand in expression.GetOperands())
            {
                if (!(operand is ConstantExpression))
                    return expression;
            }
            // now, we just simply return a constant with new value
// ***** COMMENTED OUT CODE *****
            /*try
            {
                var optimizedExpression = Expression.Constant
(expression.Evaluate());
                // sometimes, optimizing an expression changes its
type, and we just can't allow this.
                if (optimizedExpression.Type == expression.Type)
                    return optimizedExpression;
            }
                // if we fail to evaluate the expression, then just
return it
            catch (ArgumentException) { }*/
// ***** END COMMENTED OUT CODE *****//

            return expression;
        }

4. Re-compile the DbLinq project to get the new DbLinq.dll and
reference it in your projects. The ArgumentExceptions should no longer
appear and queries are executed instantly.

  Hope that helps.

  Primary Objects
  http://www.primaryobjects.com

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DbLinq" 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/dblinq?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to