2012-12-13 32 views
0

在實體框架中沒有很長一段時間,遇到了一些麻煩。實體框架0到1的關係 - 未設置對象引用

我有兩個有0到1關係的表。當我從主表(員工)中選擇一行時,除非我選擇第二個表(狀態)中沒有連接記錄的行,否則無妨。如果我這樣做的話,就拋出了「對象引用不設置到對象的實例」,當它試圖訪問第二個表的proprty:

 If Not cls.STATUS_DESC.STAFF_INFO Is DBNull.Value Then 
      lblStatusDescription.Text = cls.STATUS_DESC.STAFF_INFO 
     End If 

的LINQ我用得到的記錄是:

Dim account As STAFF = 
     (From a In sa.STAFFs 
     Where a.STAFF_NO = staffno 
     Select a).FirstOrDefault 

聲明中沒有對子表的直接引用,但是在數據庫圖中定義了連接,它允許我引用屬性。

我確定這是一個非常基本的問題,但就像我說我剛剛開始使用它!

回答

0

我不確定是否可以正確解釋代碼,但我認爲它與實體框架的延遲加載功能有關。您必須明確包含引用才能將其加載到內存中。您可以通過使用Include()方法如下。我假設STATUS_DESC是導航屬性的名稱。加入

Dim account As STAFF = 
    (From a In sa.STAFFs Where a.STAFF_NO = staffno Select a) _ 
    .Include("STATUS_DESC") _ 
    .FirstOrDefault 
+0

嗨,感謝您的回覆,但那並不幸運。我仍然得到同樣的錯誤。 – Mark

0

得到它周圍:有,如果我錯了實際的替換它

如果不cls.STATUS_DESC是沒有那麼如果最終

的財產電話,現在我想起來似乎相當明顯。這是最有效的方式,我會想EF可以處理簡單的左連接。