Uso adequado da instrução "Using" para datacontext

Estou usando o Linq to Entities e, ultimamente, descobri que muitas pessoas recomendam o envolvimento do datacontext em uma instrução de uso como esta:

<code>Using(DataContext db = new DataContext) {
    var xx = db.customers;
}
</code>

Isso faz sentido. No entanto, não sei como incorporar essa prática ao meu modelo. Por exemplo: eu tenho uma interface (chame-a de cliente) e ela é implementada por um repositório como este:

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

Então, para aproveitar o uso, precisarei alterar os métodos para ficar assim:

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

Minha pergunta é:a recomendação de usar “Using” é realmente tão boa assim? Por favor, leve em consideração que esta mudança será grande, eu tenho cerca de 25 interfaces / repositórios combos, e cada um tem cerca de 20-25 métodos, sem mencionar a necessidade de testar novamente tudo após o término. Existe outro caminho?

Obrigado!

Edgar.

questionAnswers(5)

yourAnswerToTheQuestion