实体框架 DbContext 正在释放

本文关键字:释放 DbContext 框架 实体 | 更新日期: 2023-09-27 17:55:26

我有一个使用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);

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

实体框架 DbContext 正在释放

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

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

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

如果我将查询转换为 List,然后调用 SetObjects()则整个程序可以正常工作。