Entity Framework descartando com controladores assíncronos na Web API / MVC
Eu tenho este pequeno exemplo de código:
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();
}
}
Todo ApiController / Controller implementa interface IDisposable. Portanto, no método Dispose, quero liberar quaisquer recursos, como o DbContext. Mas, se for usado o assíncrono, esse método Dispose chama na primeira ocorrência de aguardar. Então, depois de aguardar, o DbContext já está descartado. Então, qual é a melhor maneira de descartar os Contextos EF quando o assíncrono é usado? Acontece que não é possível confiar no método Dispose no controlador?