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?