Uso correcto de la declaración "Using" para el datacontext

Estoy usando Linq para Entidades y últimamente, encontré que muchas personas recomiendan envolver el datacontext en una declaración de uso como esta:

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

Esto tiene sentido. Sin embargo, no estoy seguro de cómo incorporar esta práctica en mi modelo. Por ejemplo: tengo una interfaz (llamémoslo cliente) y se implementa en un repositorio 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>

Luego, para aprovechar la ventaja de usar, tendré que cambiar los métodos para tener este aspecto:

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

Mi pregunta es:¿La recomendación de usar "Usar" es realmente tan buena? Tenga en cuenta que este cambio será importante, tengo aproximadamente 25 interfaces / combinaciones de repositorio, y cada uno tiene aproximadamente 20-25 métodos, sin mencionar la necesidad de volver a probar todo después de terminar. ¿Hay otra manera?

¡Gracias!

Edgar

Respuestas a la pregunta(5)

Su respuesta a la pregunta