2011-04-11 104 views
0

我正在創建我的第一個MVC 2 applicaiton。我遵循書中的expamples,並創建了一個ADO.NET實體數據模型,它可以自動生成model.edms和model.designer.cs文件。然後我在模型文件夾中創建了一個repository.cs文件來存儲我的檢索數據的方法。當我使用這些方法從我的表中檢索對象時,foriegn鍵屬性返回null。這裏是我的方法MVC 2與實體數據模型返回NULL爲外鍵

private LanTracerEntities2 entities = new LanTracerEntities2(); 

    public Employee FindEmployee(string empId) 

    { 
     var emp = from employee in entities.Employees 
       where employee.LogIn == empId 
       select employee; 

     return emp.FirstOrDefault(); 
    } 

一個Employee表中有以下幾列: ID EmpFName EmpLName EmpInitial 電話 的LogIn 電子郵件 LOCID

LOCID是foriegn鍵連接起來,作爲地點表。當我運行該方法時,它會爲每個屬性返回一個值,但LocID。 LocID爲空。表中有數據。這不是我唯一對foriegn關鍵屬性返回null的對象。我怎樣才能得到返回FK值的方法?

+0

你的問題與MVC無關。它更像是一個LINQ to Entities問題。 – 2011-04-11 20:56:42

回答

0

看起來你正在比較錯誤的屬性?鑑於您的參數的名字,我覺得你可能要與員工的ID來比較:

var emp = from employee in entities.Employees 
      where employee.ID == empId 
      select employee; 

說了這麼多你的主鍵應該是數字INT/BIGINT - 如果是這樣的情況下做到這一點,而不是:

int id = Convert.ToInt32(empId); 
    var emp = from employee in entities.Employees 
      where employee.ID == id 
      select employee; 

如果要包括位置作爲查詢的一部分,結果,你可以爲具體問:

var emp = from employee in entities.Employees.Include("Location") 
      .. 

這應在檢索時在您的員工記錄中填入Location財產。

+0

謝謝我添加了.Include語句,它最終包含了fk數據。我可以使用它來引入多個FK嗎?包含(「FK1」,「FK2」) – user695916 2011-04-11 21:25:53

+0

@user:是 - 您可以鏈接包含語句,即'entities.Employees.Include(「foo」).include(「bar」)'I鼓勵您查看http://msdn.microsoft.com/en-us/library/bb896272.aspx上的功能文檔 – BrokenGlass 2011-04-11 21:29:08