簡體   English   中英

LINQ to SQL關聯拋出空異常

[英]LINQ to SQL association throwing null exception

我有一個由LINQ to SQL生成的Person類,該類具有Rota類的Rota關聯屬性。

但是,當嘗試訪問Person上的Rota屬性(例如,調用db.People.First().Rota )時,在生成的LINQ to SQL類的屬性中拋出NullReferenceException

get
{
    return this._Rota.Entity;
}

在Person的構造函數中, _Rota字段被設置為default(EntityRef<Rota>)

當我將鼠標懸停在Visual Studio中的Person實例上時,DataTip會顯示Rota屬性為現有屬性並已正確填充。 我無法弄清楚為什么代碼中沒有將其初始化。

我嘗試重新生成生成的代碼,並且其他關聯運行正常。

提前致謝

最終弄清楚是什么原因造成的。

在Rota對象的OnLoaded方法中,我試圖將一個對象添加到尚未初始化的列表中(duh)。 該列表是rota對象的成員。

顯然,這應該會使一切蓬勃發展,但是它會將錯誤拋出在一個奇怪的地方,這使得調試變得困難。

在自定義OnLoaded代碼中引發的任何錯誤都將拋出在第一次訪問該實體的行上(至少在延遲加載的實體中)。 我可以更容易地調試它嗎?


編輯:大概我無法調試它更容易,因為我的OnLoaded()方法是從LINQ調用到SQL的外部代碼,從而破壞了調用堆棧?

好吧,我想根據您上面的帖子,這可能不是確切的答案,但是我建議您需要確保甚至同時檢索到一個人的Rota(默認情況下不會被檢索到) 。 您將需要配置跨關系的查詢

至於您對OnLoaded的評論 ,只有在將數據加載到其中之后,即通過SELECT而不是“延遲加載”來檢索它時,才會調用它。 也許您想要在OnCreated部分方法中提到的這段代碼? 這被稱為實例化(並因此進行加載)以及反序列化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM