RTFM? What a BOFH! :-D On Tue, Apr 14, 2009 at 3:41 PM, Pascal Craponne <[email protected]> wrote:
> http://msdn.microsoft.com/en-us/library/bb341748.aspx > http://msdn.microsoft.com/en-us/library/bb348960.aspx > > DbLinq API is similar to Linq2SQL API, so MSDN will provide you a lot of > anwers. > Never forget to RTFM :) > > Regarding the place where they are filled, you'll need to search by > yourself, since we appear to have the same level of knowledge for this > question (==none). > > On Tue, Apr 14, 2009 at 15:36, Giacomo Tesio <[email protected]> wrote: > >> Very good explaination. >> >> Some other question about this: >> - What's the difference between EntitySet and EntityRef? >> - Where are they filled/loaded? aka: where are the queries executed (i've >> found no call to Load in the core code, just in tests) >> >> About the mutual references, I think that EntityTraker shoul be enought. >> >> After all, EntityTracking is a requirement even for Linq2Sql's lazy >> loading... >> >> >> Giacomo >> >> >> On Tue, Apr 14, 2009 at 11:53 AM, Pascal Craponne <[email protected]>wrote: >> >>> Well, let's try :) >>> 1. First of all, lazy loading means that after the first load, all >>> entity's EntitySets and EntityRefs are empty. >>> 2. The first time they're used, we want them to actually load the >>> referenced entities and keep them for further reference. >>> 3. Next, when using EntitySets and EntityRefs, we get a fast access to >>> the referenced entities, because they're already loaded. >>> >>> Until here, I think we all agree. >>> >>> So now, let's see each point in details. >>> We start from point 2, where the effective loading is done. >>> The EntitySet or EntityRef needs: >>> a. A foreign key referencing the entities to be loaded. >>> b. A reference to the table >>> c. A reference to the DataContext, or something like this. >>> Once invoked when unitialized, the EntitySet/Ref just performs a request >>> on the foreign keys to load the entities. >>> >>> Now let's move to point 1. >>> When an entity is loaded for the first time, its EntitySets and Refs are >>> initialized with the foreign keys and all necessary information to perform >>> lazy loading. >>> >>> Point 3 is no problem at all. >>> >>> So our EntitySet/Ref can be initialized in two ways: >>> - providing the entities (to allow eager loading, or current system). >>> - providing the foreign keys and all required information. >>> >>> But, of course, this would be too simple, since there are a few problems >>> to handle: >>> - mutual reference: an entity referenced with an EntitySet also has an >>> EntityRef to its referencing entity (am I clear?). We need to be sure that >>> all links are correct. This should probably work without any change thanks >>> to the cache. >>> - correct use of cache (Giacomo, I know you are fully concerned with this >>> :). This should work correctly if we reuse the DataContext. >>> - DataContext lifetime. When using lazy loading, we imply that the >>> DataContext is keep somewhere, so we may change its lifetime when used in a >>> service architecture. Worse, we could get problems when the DataContext >>> connection is closed. This is usually why lazy loading isn't allowed from >>> outside a service call, because the connection and transactions are closed, >>> and lazy loading can not be performed anymore. >>> >>> There may be some other problems, but I dumped here all the ideas I had >>> at the moment :) >>> >>> Pascal. >>> >>> On Tue, Apr 14, 2009 at 11:11, Giacomo Tesio <[email protected]> wrote: >>> >>>> Mmm... Do you know where I could work for implementing a correctly >>>> working lazy loading? >>>> >>>> Yet I've no complexive view of the source code, so any input is welcome. >>>> >>>> I saw Pablo worked on EntityRef and EntitySet but I've not yet idea of >>>> the difference. >>>> Could you explain me? >>>> >>>> >>>> Giacomo >>>> >>>> >>>> On Tue, Apr 14, 2009 at 10:59 AM, Pascal Craponne <[email protected]>wrote: >>>> >>>>> As far as I remember, it's neither eager or lazy.The linked entities >>>>> are loaded after the requested one are processed, and this, recursively. >>>>> >>>>> This is not eager because there are multiple requests to get all the >>>>> work done. >>>>> This is not lazy because when items are loaded all subsequent entities >>>>> are also loaded. >>>>> >>>>> Pablo implemented this, but he's not very active on the list by these >>>>> days :S >>>>> >>>>> On Mon, Apr 13, 2009 at 23:21, Giacomo Tesio <[email protected]> wrote: >>>>> >>>>>> Reading >>>>>> >>>>>> http://groups.google.com/group/dblinq/browse_thread/thread/283191499b74199f >>>>>> and >>>>>> >>>>>> http://groups.google.it/group/dblinq/browse_thread/thread/4a67b172b607b0f9/666ae4667594c828?hl=it&lnk=gst&q=lazy+load# >>>>>> >>>>>> I could not understand if DbLinq currently support lazy loading or >>>>>> not... >>>>>> >>>>>> Can you help me? >>>>>> >>>>>> >>>>>> 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 -~----------~----~----~----~------~----~------~--~---
