2013-01-23 193 views
2

我有一個小程序,使用ObjectListView可視化數據庫信息。目前我正在嘗試添加項目並繼續獲取The operation cannot be completed because the DbContext has been disposed.這是突出顯示olvEntityTypes.AddObject(et);下面的一行。實體框架DbContext得到處置

代碼:

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

它只是一個ObjectListView。除了映射列之外,我沒有觸及它,這些都是通過GUI /設計器完成的。我不知道爲什麼它甚至需要用於AddObject的DbContext,但不用於SetObject? – Trent

回答

3

事實證明,問題是objectlist的對象的初始設置。我正在使用這段代碼;

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

這在我的代碼庫,因此,一個完全不同的DbContext工作正常,但在不同的using塊。

如果我將查詢轉換爲列表然後調用SetObjects()整個程序工作正常。