ho questo piccolo esempio di codice:Entity Framework smaltimento con i controller asincroni in API Web/MVC
public class ValueController : ApiController
{
private EstateContext _db;
public ValueController()
{
_db = new EstateContext();
}
[HttpPost]
public async void DoStuff(string id)
{
var entity = await _db.Estates.FindAsync(id); //now our method goes out and Dispose method is calling
//returns here after disposing
_db.SaveChanges(); // _db is disposed
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
_db.Dispose();
}
}
Ogni ApiController/controller implementa l'interfaccia IDisposable. Quindi nel metodo Dispose voglio liberare risorse come DbContext. Ma se si usa async, questo metodo di Dispose chiama al primo occorrenza di attesa. Quindi, dopo l'attesa, DbContext è già disposto. Quindi qual è il modo migliore per disporre di contesti EF quando si usa async? Si scopre che non è possibile fare affidamento sul metodo Dispose nel controller?
'vuoto asincrono'? Sembra una cattiva idea ... – David
@David mi hai risparmiato un sacco di tempo)) grazie – Wachburn