Hi Giacomo, a MetaTableExpression is an internal object that associates two tables with a relation (join).
Pascal. jabber/gtalk: [email protected] msn: [email protected] On Fri, Mar 20, 2009 at 11:18, Giacomo Tesio <[email protected]> wrote: > Hi! > > Since I've not yet found the time to deeply understand and fix the bug, can > you explain me what's the definition of the metatable concept? > > > I've to understand if it's to be used to fix the problem (actually if the > problem is that it's not used or updated when the second join is visited). > > > Giacomo > > > > On Fri, Mar 13, 2009 at 3:12 PM, Giacomo Tesio <[email protected]> wrote: > >> I've added it now, >> http://code.google.com/p/dblinq2007/source/diff?spec=svn1016&r=1016&format=side&path=/trunk/src/DbLinq/Test/Providers/ReadTest.cs >> >> On ReadTest.C12_SelectEmployee_MultiJoinWithWhere() >> >> >> Giacomo >> >> >> On Fri, Mar 13, 2009 at 9:37 AM, Pascal Craponne <[email protected]>wrote: >> >>> Do we have a unit test somewhere showing this problem? >>> Pascal. >>> >>> jabber/gtalk: [email protected] >>> msn: [email protected] >>> >>> >>> >>> >>> On Fri, Mar 13, 2009 at 08:58, Giacomo Tesio <[email protected]> wrote: >>> >>>> As far as I saw, the problem signaled is related to multiple joins and >>>> anonymous type handling. >>>> >>>> During the first example expression tree visit, the *where *node is >>>> unable to access the *r* parameter, since it is part of a generated >>>> anonymous type containing both *r* and *l*. >>>> >>>> On a single join query there's no such anonymous type, so the *r* would >>>> be reachable. >>>> >>>> >>>> Here the question: why there is such anonymous type? >>>> Could such anonymous type be substituted by something more easy to >>>> handle? (metatable? if I've understood what they are...) >>>> Or could a query optimization (given it's executed in the right moment) >>>> scompose the where and move each clausole in the right place? >>>> >>>> >>>> Giacomo >>>> >>>> On Thu, Mar 5, 2009 at 6:57 PM, Giacomo Tesio <[email protected]> wrote: >>>> >>>>> Building the following query I'm getting such an exception in >>>>> DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation\QueryBuilder.cs >>>>> >>>>> var res = from r in db.Roles >>>>> join l in db.RoleUserLinks on r.Id equals >>>>> l.cRoleID >>>>> join us in db.Users on l.cUserID equals us.Id >>>>> *where r.cRole == "RP00"* >>>>> select us; >>>>> >>>>> BTW moving the where in the initial from query execute with no problem: >>>>> var res = from r in db.Roles*.Where((r) => r.cRole == >>>>> "RP00")* >>>>> join l in db.RoleUserLinks on r.Id equals >>>>> l.cRoleID >>>>> join us in db.Users on l.cUserID equals us.Id >>>>> select us; >>>>> >>>>> I'm try to debug the problem but with no success: >>>>> >>>>> protected virtual void CompileRowCreator(BuilderContext >>>>> builderContext) >>>>> { >>>>> var reader = builderContext.CurrentSelect.Reader; >>>>> reader = >>>>> (LambdaExpression)SpecialExpressionTranslator.Translate(reader); >>>>> reader = >>>>> (LambdaExpression)ExpressionOptimizer.Optimize(reader, builderContext); >>>>> builderContext.ExpressionQuery.RowObjectCreator = * >>>>> reader.Compile()*; >>>>> } >>>>> >>>>> Exception is thrown from reader.Compile(), but I can't understand the >>>>> difference between the two queries... >>>>> >>>>> What am I missing? >>>>> >>>>> >>>>> Giacomo >>>>> >>>> >>>> >>>> >>>> >>> >>> >>> >> > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
