2010-06-15 33 views
1

我剛剛開始了一些實體框架的探索,我想現在是時候看看大家都在抱怨什麼。我遇到了一個問題,實體似乎沒有返回任何對象上下文。我從一個數據庫中生成了三個相互鏈接的表格。實體框架沒有填充上下文

Courses 
Instructors 
CanTeach 

關係是你所期望的:一個療程可以涉及到多個CanTeach實體和講師也可以涉及多個CanTeach實體。我還爲我的項目添加了OData服務,該服務也使用相同的模型。所以我可以運行查詢,如

from a in CanTeach 
where a.Instructor.FirstName == "Barry" 
select new { Name = a.Instructor.FirstName + " " + a.Instructor.LastName, 
    Course = a.Course.Name} 

對於使用LINQPad的OData端點沒有問題。然而,當我做一個簡單的查詢,如

public Instructor GetInstructorFromID(int ID) 
{ 
    return context.Instructors.Where(i => i.ID == ID).FirstOrDefault(); 
} 

CanTeach列表爲空。我知道EF中的所有內容都是延遲加載的,當我查看對象上下文時,我的上下文有可能超出了範圍,但是,即使在運行查詢時嘗試獲取對象上下文,也會產生空對象上下文。

我在做什麼錯?

編輯:

除了下面我的答案發現,

return context.Instructors.Include("CanTeach").Where(i => i.ID == ID).FirstOrDefault(); 

努力爲那些尋找更多能說一口流利的API。

回答

0

裏查這個詞包含

from a in CanTeach.Include("Instructors") 
where a.Instructor.FirstName == "Barry" 
select new { Name = a.Instructor.FirstName + " " + a.Instructor.LastName, 
      Course = a.Course.Name} 
+0

啊,我沒想到有明確加載它們。謝謝 – stimms 2010-06-15 18:48:50