OData控制器中的静态实体框架db上下文

时间:2016-06-03 13:57:27

标签: c# entity-framework rest asp.net-web-api odata

在ASP.NET Web API的OData教程中,他们总是将新的DbContext设置为控制器的私有属性。

public class LocationPropertiesController : ODataController
{
    Entities ctx = new Entities();

    [EnableQuery]
    public IQueryable<LocationProperties> Get()
    {
        return ctx.LocationProperties;
    }

    protected override void Dispose(bool disposing)
    {
        ctx.Dispose();
        base.Dispose(disposing);
    }
}

认为dispose方法可以完成这项工作。

但实际情况是,上下文,连接或其他任何内容都可能失败,然后我留下了一个处理后的ctx,我无法在以下请求中重复使用,因为给我的控制器仍然是同一个实例。

另一方面,如果返回了IQueryable,那么OData可以对生物进行过滤,如果我使用(ctx ...)包装该查询,那么我就成了数据库的胖客户端。

那么我们处理OData中的设计缺陷还是我在这里缺少什么?

0 个答案:

没有答案