我有這種奇怪的行爲。 Im將一些實體加入列表<>並附加到網格。 當雙擊網格我把行轉換爲實體並附加到屬性。LINQ to SQL ObjectDisposedException對於從未要求的實體
我已經在我的數據庫和代碼改變了一些東西,現在我得到這個例外,而我從來沒有想查這個實體引用的東西。
任何想法?
我有這種奇怪的行爲。 Im將一些實體加入列表<>並附加到網格。 當雙擊網格我把行轉換爲實體並附加到屬性。LINQ to SQL ObjectDisposedException對於從未要求的實體
我已經在我的數據庫和代碼改變了一些東西,現在我得到這個例外,而我從來沒有想查這個實體引用的東西。
任何想法?
這似乎發生在我身上時,我嘗試訪問的屬性,是不是在數據庫表的實體來源於其中的一列。
例如,也許你的數據庫有一個表Vehicle
的列Id
,Year
,Make
,Model
和EngineId
。 LinqToSql實體將爲每列提供一個屬性,但它也會添加一個名爲Engine
的屬性,該屬性包含一個Engine
實體。
如果您Vehicle
數據轉換爲List<Vehicle>
然後嘗試訪問的Engine
某些屬性,你會得到一個ObjectDisposedException
除非你DataContext
仍然有效。
因此,如果您在完成DataContext
之後需要(例如)Vehicle.Engine.CylinderCount
,則需要構建一個自定義對象來平滑數據,以便只需一個「點」即可獲取數據需要。
你可以寫一個ViewModel
類很容易做到這一點。例如:
public class VehicleViewModel
{
public int Id { get; set; }
public int Year { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public int EngineId { get; set; }
public int CylinderCount { get; set; }
}
現在,如果你寫你的LinqToSql查詢來填充List<VehicleViewModel>
代替List<Vehicle>
,你應該停止得到一個ObjectDisposedException
當您嘗試訪問CylinderCount
。
你的解釋很難遵循。發佈代碼會有幫助。 – 2010-05-29 23:20:00