Sto codificando con i blocchi 'using' ma mi chiedo se posso restituire un IQueryable dal seguente senza che l'oggetto venga eliminato prima dell'accesso.Come posso restituire una query IQueryable da Linq a SQL quando dbContext è con un blocco 'using'?
public IQueryable<Contact> GetContacts(string clientID)
{
using (dbDataContext db = new dbDataContext())
{
var contacts = from _contacts in db.Contacts
where _contacts.ClientID == clientID
orderby _contacts.LastName ascending
select _contacts;
return contacts;
}
}
Do ho semplicemente rimuovere il blocco 'con' e lasciare .Net gestire gli oggetti, o posso avere LINQ per eseguire la query iniziale e restituisce l'oggetto popolato.
nota che non è veramente necessario disporre esplicitamente il datacontext. buona domanda comunque comunque. – fearofawhackplanet
@fearofawhackplanet - ehm, sì, lo è. Qualsiasi oggetto usa e getta dovrebbe essere assunto per ** richiedere ** smaltimento, e deve essere gestito in modo appropriato, IMO. Può contenere una connessione aperta, ad esempio ... –
@Marc: Sto solo andando su quello che ho letto su diversi blog, e anche praticamente tutti gli esempi di ScottGu e del team di Linq. La posizione ufficiale Microsoft, per quanto posso raccogliere, è che puoi disporre se ti fa sentire meglio, ma in realtà non è necessario. Vedi http://leedumond.com/blog/about-disposing-the-datacontext/ come esempio per alcune discussioni sullo smaltimento e il problema dell'esecuzione posticipata descritto in questa domanda. – fearofawhackplanet