我有一个使用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);
所以我现在有点不知道为什么这会抛出错误以及如何解决它。
答案 0 :(得分:3)
事实证明问题是对象列表视图的对象的初始设置。我正在使用这段代码;
var query = db.EntityTypes.OrderBy(eg => eg.EntityTypeName);
olvEntityTypes.SetObjects(query);
哪个工作正常,但在我的代码库中位于不同的using
块中,因此,它是一个完全不同的DbContext。
如果我将查询转换为List然后调用SetObjects()
,则整个程序无故障地工作。