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.

questionAnswers(5)

yourAnswerToTheQuestion