实体框架DbContext被处理掉了

时间:2013-01-23 06:11:52

标签: c# entity-framework-5 dbcontext objectlistview

我有一个使用ObjectListView可视化数据库信息的小程序。目前我正在尝试添加项目并继续获取The operation cannot be completed because the DbContext has been disposed.这突出显示了下面的olvEntityTypes.AddObject(et);行。

代码:

string typeName = tbTypeName.Text;
string desc = tbDesc.Text;

EntityTypes et;
using (FCERTSModelContainer db = new FCERTSModelContainer())
{
    // Create and save new row for the EntityTypes table.
    et = new EntityTypes { EntityTypeName = typeName, Description = desc };
    db.EntityTypes.Add(et);
    db.SaveChanges();

    olvEntityTypes.AddObject(et);
}
  • 我怀疑SaveChanges()也可能正在关闭上下文,但是在保存更改之前尝试添加对象仍会引发相同的错误。
  • olvEntityTypes.AddObject(et);放在using块之外也是失败的。
  • 如果我使用以下内容查询数据库,则不会引发任何错误;

代码:

var query = from ent in db.EntityTypes
            orderby ent.EntityTypeName
            select ent;

olvEntityTypes.SetObjects(query);

所以我现在有点不知道为什么这会抛出错误以及如何解决它。

1 个答案:

答案 0 :(得分:3)

事实证明问题是对象列表视图的对象的初始设置。我正在使用这段代码;

var query = db.EntityTypes.OrderBy(eg => eg.EntityTypeName);
olvEntityTypes.SetObjects(query);

哪个工作正常,但在我的代码库中位于不同的using块中,因此,它是一个完全不同的DbContext。

如果我将查询转换为List然后调用SetObjects(),则整个程序无故障地工作。