views:

1683

answers:

2

I'm not that clear on the best-practice concerning the use and re-use of the entity-framework Context.

My question is, should I try to create 1 context and re-use it many times for different queries or should I create a new context for each query?

For example if I have a form with 10 charts all with data queried from the same tables, should the 10 queries be from the one context or 10 different contexts?

From a code encapsulation point-of-view I'd prefer to create 10 new contexts, is this a good idea and is it scalable?

+1  A: 

IMHO - i could be wrong but this is how i do it...

If you are talking about the Model - Context use one. Since you only need one Model - Context in which to query - ie this is the database model.

If you are talking about ObjectContext - then one for each Query (Linq). Take alook at this Performance Considerations for Entity Framework

A very good link, it has helped alleviate some fears about performance when creating many contexts.
Rhys
+5  A: 

It all depends on your app.

A key consideration is that ObjectContext is not threadsafe so for a web app ObjectContext per request is the way to go.

For a Win Forms app you can look at having longer-lived ObjectContexts. However, if you prefer to scope things more tightly I would try that first as opposed to prematurely optimizing it.

More on Danny Simmons blog here.

Andrew Peters
Thanks for the link, it provided the information I need to feel comfortable creating different contexts for the situation in my question. Also I had not noticed the Detach method before so that will come in handy for future projects.
Rhys