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 -~----------~----~----~----~------~----~------~--~---
