Ok... so we need - to refactor it to become "an internal object that associates N tables with some relations" or - to create a metatable on each join (after the first join containing metatables containing the precedents joined table)
Which do you think would be better? Giacomo On Fri, Mar 20, 2009 at 11:22 AM, Pascal Craponne <[email protected]> wrote: > 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 -~----------~----~----~----~------~----~------~--~---
