C# 正在处理实体框架DbContext

C# 正在处理实体框架DbContext,c#,entity-framework-5,dbcontext,objectlistview,C#,Entity Framework 5,Dbcontext,Objectlistview,我有一个小程序,用来可视化数据库信息。当前我正在尝试添加项并不断获取操作无法完成,因为DbContext已被释放。其中突出显示了olvenitytypes.AddObject(et)下面的行 代码: string typeName = tbTypeName.Text; string desc = tbDesc.Text; EntityTypes et; using (FCERTSModelContainer db = new FCERTSModelContainer()) { // C

我有一个小程序,用来可视化数据库信息。当前我正在尝试添加项并不断获取
操作无法完成,因为DbContext已被释放。
其中突出显示了
olvenitytypes.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);
}
var query = from ent in db.EntityTypes
            orderby ent.EntityTypeName
            select ent;

olvEntityTypes.SetObjects(query);
  • 我怀疑
    SaveChanges()
    也可能正在关闭上下文,但在保存更改之前尝试添加对象仍然会引发相同的错误
  • 放置
    olventypes.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);
}
var query = from ent in db.EntityTypes
            orderby ent.EntityTypeName
            select ent;

olvEntityTypes.SetObjects(query);

因此,我现在有点不知所措,不知道为什么会抛出错误以及如何修复它。

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

var query = db.EntityTypes.OrderBy(eg => eg.EntityTypeName);
olvEntityTypes.SetObjects(query);
这很好,但是在我的代码库中使用的是不同的
块,因此是完全不同的DbContext


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

它只是一个ObjectListView。除了映射列之外,我没有涉及它,这都是通过GUI/designer完成的。我不知道为什么它甚至需要AddObject的DbContext,而不是SetObject?