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.