I am facing the same problem. I was wondering how to use short lived DataContexts.
Seema On Jan 31, 7:16 pm, Matt <[email protected]> wrote: > Thanks, I now use short-lived DataContexts and it works fine :) > > On Jan 19, 1:26 pm, Jonathan Pryor <[email protected]> wrote: > > > > > On Thu, 2010-01-14 at 10:40 -0800, Matt wrote: > > > Hi! I'm having a problem with DbLinq and PostgreSQL. Take a look at > > > the following scenario. > > > > 1. I retrieve an entity from the database from Client 1 > > > 2. I retrieve an entity from the database from Client 2 and make some > > > changes to it > > > 3. I submit the changes from Client 2 > > > 4. I retrieve the entity again from Client 1 > > > > The problem is at step 4, the returned entity is the same cached > > > entity. How can I force DbLinq to refresh it? > > > The question is, how are you getting into this scenario. > > > By design, DbLinq will cache certain entities and not query the DB for > > them; see e.g. [0] and the comment on G16_CustomerCacheHit(). (Now, > > admittedly DbLinq doesn't actually pass this test, meaning we're not > > caching properly, but at some point DbLinq will cache as .NET > > Linq-to-SQL does, and Linq-to-SQL *does* pass that test properly). > > > I think the problem is that your DataContext is long-lived, and they're > > not supposed to be long-lived (for a variety of reasons previously > > discussed on this list over the last summer, iirc). > > > DataContexts should be *short* lived, generally scoped to a method, and > > create anew each time you need to query it. If you do this, you're > > unlikely to hit a scenario where Client 1 gets an entity, Client 2 > > changes it, and Client 1 again queries the entity, because the time > > frame works against you (unless Client 1 is Thread.Sleep()ing for an > > extended period of time, which has its own set of scalability problems). > > > - Jon > > > [0]http://dblinq2007.googlecode.com/svn/trunk/src/DbLinq/Test/Providers/... -- 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.
