Ich habe diese kleine Probe von Code:Entity Framework mit Asynchron-Controllern in Web api/MVC Entsorgung
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();
}
}
Jeder ApiController/Regler implementiert IDisposable-Schnittstelle. In der Dispose-Methode möchte ich also Ressourcen wie DbContext freigeben. Wenn jedoch async verwendet wird, ruft diese Dispose-Methode beim ersten Auftreten von warte auf. Also nach dem Warten habe ich DbContext bereits entsorgt. Also, was ist der beste Weg, EF Kontexte zu entsorgen, wenn Async verwendet wird? Es stellt sich heraus, dass es nicht möglich ist, sich auf die Dispose-Methode im Controller zu verlassen?
'async void'? Das scheint eine schlechte Idee zu sein ... – David
@David hast du mir übrigens viel Zeit gespart)) danke – Wachburn