Правильное использование оператора «Using» для контекста данных

Я использую Linq to Entities, и в последнее время я обнаружил, что многие люди рекомендуют заключать контекст данных в оператор using, подобный этому:

Using(DataContext db = new DataContext) {
    var xx = db.customers;
}

Это имеет смысл. Однако я не уверен, как включить эту практику в мою модель. Например, :У меня есть интерфейс (, назовем его клиентом ), и он реализован в репозитории, подобном этому :

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.
        //*******************************************

    }
}

. Затем, чтобы воспользоваться преимуществами использования, мне нужно изменить методы, чтобы они выглядели следующим образом: это:

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
        //*******************************************

    }
}

Мой вопрос::рекомендация использовать «Использование» действительно так хороша? Пожалуйста, примите во внимание, что это изменение будет значительным, у меня есть около 25 комбо интерфейсов/репозиториев, и каждый имеет около 20 -25 методов, не говоря уже о необходимости повторно -протестировать все после завершения.. Есть ли другой способ?

Спасибо!

Эдгар.

8
задан epaulk 23 April 2012 в 14:01
поделиться