什么时候需要配置数据库连接

Bat*_*rog 3 c# database entity-framework asp.net-mvc-3

我有一个类包含几个为我的MVC应用程序定制的常用方法,我在几个地方使用.这是一些例子:

    private MyEntities db = new MyEntities();


    public List<SelectListItem> GetLocationList()
    {
        var query =
                db.v_LocationsAlphabetical.OrderByDescending(x => x.Category).ThenBy(x => x.LocationName).ToList()
                .Select(x => new SelectListItem
                {
                    Value = x.LocationID.ToString(),
                    Text = x.LocationName
                });

        return (query).ToList();
    }

    public IEnumerable<SelectListItem> GetStates()
    {
        var query = db.States.Select(x => new SelectListItem
        {
            Value = x.Abbr,
            Text = x.Name
        });

        return(query);
    }

    public List<Person> GetPeople()
    {
        var query = db.Person.OrderBy(m => m.LastName).ThenBy(m => m.FirstName).ToList();

        return (query);

    }
Run Code Online (Sandbox Code Playgroud)

这些方法中的每一个都调用数据库来获取数据,我想知道是否需要为每个方法添加一个dispose.如果没有,为什么?谢谢.

rec*_*ive 6

您不应该在每个方法中调用dispose,因为它的生命周期db与封闭类的生命周期相同,因为它不是方法中的局部变量.

处理这种情况的典型方法是使当前的类IDisposable和调用db.Dispose()Dispose()方法.

  • 而这通常是不正确的.通常不需要在DbContext上调用Dispose,因为没有什么可以处理的.这直接来自编写DbConext类的EF团队.有关为什么http://blog.jongallant.com/2012/10/do-i-have-to-call-dispose-on-dbcontext.html#.Ua0IS5yXT0U的完整说明 (2认同)