Prawidłowe użycie instrukcji „Using” dla danych datacontext
Używam Linq do Entities i ostatnio odkryłem, że wielu ludzi zaleca zawijanie tekstu datacontext w takiej instrukcji:
<code>Using(DataContext db = new DataContext) { var xx = db.customers; } </code>
To ma sens. Nie wiem jednak, jak włączyć tę praktykę do mojego modelu. Na przykład: Mam interfejs (nazwijmy go klientem) i jest on implementowany przez takie repozytorium:
<code>namespace Models { public class rCustomer : iCustomer { readonly DataContext db = new DataContext(); public customer getCustomer(Guid id) { return db.customers.SingleOrDefault(por => por.id == id); } public iQueryable<customer> getTopCustomers() { return db.customers.Take(10); } //******************************************* //more methods using db, including add, update, delete, etc. //******************************************* } } </code>
Następnie, aby wykorzystać tę zaletę, będę musiał zmienić metody, aby wyglądały tak:
<code>namespace Models { public class rCustomer : iCustomer { public customer getCustomer(Guid id) { using(DataContext db = new DataContext()) { return db.customers.SingleOrDefault(por => por.id == id); } } public iQueryable<customer> getTopCustomers() { using(DataContext db = new DataContext()) { return db.customers.Take(10); } } //******************************************* //more methods using db //******************************************* } } </code>
Moje pytanie brzmi:zalecenie używania „Używania” jest naprawdę dobre? Proszę wziąć pod uwagę, że ta zmiana będzie ważna, mam około 25 kombinacji interfejsów / repozytoriów, a każda z nich ma około 20-25 metod, nie wspominając o konieczności ponownego przetestowania wszystkiego po zakończeniu. Czy jest inny sposób?
Dzięki!
Edgar.