2009-08-06 20 views
0

我已經設置了4個獨立的表,它們之間都有fk關係。我遇到的主要問題是一個名爲EmployeeQuestions和Questions表的表。我正在使用實體來建模對象。當我得到我的EmployeeQuestions對象時,我檢查它以確保EmployeeQuestions和Employee之間的關係存在,並且我可以通過該關係獲取所有信息,但EmployeeQuestions和Questions之間的關係始終爲空。我已經檢查確保關係設置正確,它是。此外,我試圖在所有EmployeeQuestions的列表上進行搜索,並且我可以在Question表中查詢QuestionID的結果,但是我無法獲得描述字段。ADO.net實體一關係總是返回null

我是非常新的與數據庫的工作,任何幫助將不勝感激。

謝謝。

回答

1

你能告訴我們你正在使用的查詢嗎?

默認情況下,實體框架將而不是遍歷關聯以獲取關聯對象的「另一端」 - 您必須明確地執行此操作。

var emps = from e in ObjectContext.Employees 
      where (some condition) 
      select e; 

在這種情況下,你「Employee.Questions」協會(假設這就是所謂的那個)將始終爲NULL - 由設計。

您可以指定在查詢了「包含」:

var emps = from e in ObjectContext.Employees.Include("Questions") 
      where (some condition) 
      select e; 

,現在在這種情況下,獲取員工時,相關的「問題」也將被加載。

或者,你可以這樣做:

var emps = from e in ObjectContext.Employees 
      where (some condition) 
      select e; 

foreach(Employee e1 in emps) 
{ 
    if(!e1.QuestionReference.IsLoaded) 
    { 
    e1.QuestionReference.Load(); 
    } 
} 

明確和代碼加載的相關對象。

由於這已被很多人認爲是一個缺點,在EFv4中,將會有一個選項來打開這個自動的「延遲」加載 - 但是,你必須明確地和明確地做到這一點。

Marc

+0

非常感謝你,真是令人沮喪。 – 2009-08-06 16:16:16