estoy usando LINQ a Entidades y, últimamente, he encontrado que una gran cantidad de gente que recomiendan envolver el DataContext en una instrucción using así:El uso apropiado de "Uso de" declaración de DataContext
Using(DataContext db = new DataContext) {
var xx = db.customers;
}
Esto tiene sentido . Sin embargo, no estoy seguro de cómo incorporar esta práctica en mi modelo. Por ejemplo: Tengo una interfaz (vamos a llamarlo cliente) y está implementado por un repositorio de la siguiente manera:
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.
//*******************************************
}
}
Entonces, para tomar la ventaja de usar, que tendrá que cambiar los métodos para que parezca esto:
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
//*******************************************
}
}
Mi pregunta es: la recomendación de utilizar “uso” es realmente tan bueno? Tenga en cuenta que este cambio será importante, tengo alrededor de 25 interfaces/combinaciones de repositorios, y cada uno tiene aproximadamente 20-25 métodos, sin mencionar la necesidad de volver a probar todo después de finalizar. ¿Hay alguna otra manera?
Gracias!
Edgar.
Depende de cómo uses esa clase. – SLaks
Si sabe lo que 'using' está haciendo, depende de usted decidir si es válido para usted o no. – gdoron