2

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

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

4

1 回答 1

3

事实证明,问题出在 objectlistview 对象的初始设置上。我正在使用这段代码;

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

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

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

于 2013-01-23T06:37:35.603 回答