相关疑难解决方法(0)

实体框架在Web api/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();
    }
}
Run Code Online (Sandbox Code Playgroud)

每个ApiController/Controller都实现了IDisposable接口.所以在Dispose方法中我想释放任何资源,比如DbContext.但是如果使用async,则此Dispose方法在第一次出现await时调用.所以在等待之后我已经处理了DbContext.那么在使用异步时处理EF上下文的最佳方法是什么?事实证明,在控制器中不可能依赖Dispose方法?

c# asp.net asp.net-mvc entity-framework asp.net-web-api

10
推荐指数
1
解决办法
3779
查看次数