2011-06-17 94 views
2

林遇到實體框架時遇到問題。所選對象的對象屬性爲空

這裏是我的代碼:

var activeScoreList = (from s in context.Score 
         join i in context.Import on s.import.importId equals i.importId 
         where i.isActive.Value == 1 
         select s).ToList(); 

foreach (Score s in activeScoreList) 
{ 
    if (s.User.userId == loggedOnUserId) { // Here 
     ... 
    } 
} 

我在我的數據庫中的幾個Score對象和外鍵UserIdNOT NULL
但是,if行始終是例外User屬性總是null

我是Linq的新手,所以我可能錯過了配置的地方。這種行爲是否正常?我必須爲每個分數進行一次新查詢才能獲得User對象嗎?

回答

2

編輯 - 您實際上不需要加入聲明。您可以像這樣重寫查詢

var activeScoreList = (from s in context.Score.Include("User").Include("Import") 
         where s.Import.isActive.Value == 1 
         select s).ToList(); 

您需要加載用戶導航屬性。因此,在您的foreach語句可以調用

s.UserReference.Load() 

如果你沒有使用你的查詢join語句,你可以使用context.Score.Include("User"),但是因爲你使用了join它會忽略所有Include陳述

+0

謝謝,我不知道Include()方法! – madprog