Smaltimento del contesto dell’object nel framework entity framework 4

Ho una class di entity framework che viene generata automaticamente dal mio modello di database. Questa class eredita l’ObjectContext che eredita l’ID.

Ho creato un repository che ha vari metodi che utilizzano una singola istanza dell’object quadro per interagire con il database.

Classe generata automaticamente

public partial class DevEntities : ObjectContext { public const string ConnectionString = "name=DevEntities"; public const string ContainerName = "DevEntities"; 

Classe di deposito

 DevEntities db = new DevEntities(); public Customer GetCustomerByID(int id) { var customers = db.Customers.FirstOrDefault(c => c.CustomerId == id); return customers; } public Customer GetCustomerByPasswordUsername(string email, string password) { var customers = db.Customers.FirstOrDefault(c => c.Email == email && c.Password == password); return customers; } 

Da questo puoi vedere che faccio più riferimenti all’istanza db. La mia domanda è, sono meglio istanziare una nuova DevEntity all’interno di ciascun metodo, quindi essere in grado di implementare l’istruzione using, e quindi assicurare lo smaltimento corretto, oppure la mia attuale implementazione è ok?

Vorrei implementare IDisposable nella class Repository, in modo che possa disporre ObjectContext . Se si restituisce un ObjectContext diverso ogni volta, è ansible che si verifichino dei problemi durante l’esecuzione di query tra tali oggetti, poiché questi sono collegati a diversi ObjectContext , il che si tradurrà in un’eccezione.

Definizione:

 public class Repository : IDisposable { DevEntities db = new DevEntities(); public Customer GetCustomerByID(int id) { var customers = db.Customers.FirstOrDefault(c => c.CustomerId == id); return customers; } public Customer GetCustomerByPasswordUsername(string email, string password) { var customers = db.Customers.FirstOrDefault(c => c.Email == email && c.Password == password); return customers; } public void Dispose() { db.Dispose(); } } 

Uso:

 using(Repository r = new Repository()) { //do stuff with your repository } 

In questo modo, il repository si occupa di smaltire ObjectContext dopo averlo utilizzato.