2010-05-29 53 views
0

我有這種奇怪的行爲。 Im將一些實體加入列表<>並附加到網格。 當雙擊網格我把行轉換爲實體並附加到屬性。LINQ to SQL ObjectDisposedException對於從未要求的實體

我已經在我的數據庫和代碼改變了一些東西,現在我得到這個例外,而我從來沒有想查這個實體引用的東西。

任何想法?

+0

你的解釋很難遵循。發佈代碼會有幫助。 – 2010-05-29 23:20:00

回答

1

這似乎發生在我身上時,我嘗試訪問的屬性,是不是在數據庫表的實體來源於其中的一列。

例如,也許你的數據庫有一個表Vehicle的列IdYearMakeModelEngineId。 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