2014-01-29 48 views
0

附加表的數據我有以下三個表如何從使用EF/LINQ

Employee(empid, name) 
Role(roleid, name) 
EmpRoleMap(mapid, empid,roleid) 

在索引視圖我告訴員工與每個員工編輯鏈接的鏈接。當用戶點擊編輯時,它會打開選​​定員工的編輯篩選器。

對於此頁面呈現我正在對數據庫進行兩次調用。首先是獲取有關選定員工的詳細信息。其次是查詢EmpRoleMap表以找出員工所屬的所有角色。

我想在單個數據庫調用中做同樣的事情,即單個調用會給我關於員工和來自EmpRoleMap & RoleName列表的僱員的詳細信息。

我在腳手架上使用Code First方法。

我該如何使用EntityFramework來做到這一點?我們可以使用LINQ的「包含」子句從其他表(這裏是EmpRoleMap,Role)獲取其他數據。

+0

阻止您在單個EDM中添加所有3個表格?點擊此處查看此鏈接。它可能會幫助你。 http://www.dotnetcurry.com/showarticle.aspx?ID=600 – samar

+0

如果你的模型具有適當的導航屬性,你可以使用'Include'(類似於'公共虛擬IList 角色{get; set;}例如,在Employee類中)。如果沒有,則必須使用連接進行查詢。順便說一句,在代碼優先的情況下,你不應該有一個'EmpRoleMap'實體,因爲它只是一個關係數據表(沒有更多的信息)。 –

回答

0

你必須做一個好的實體模型設計。我會試着向你展示我在說什麼,但請記住,在這一刻我無法檢查代碼。

public class EmployeeModel 
    { 
     [Key] 
     [ForeignKey("EmployeeRoles")] 

     public decimal empid { get; set; } 

     public string name { get; set; } 

     public virtual List<EmpRoleModel> EmployeeRoles { get; set; } 
    } 

    public class RoleModel 
    { 
     [Key] 
     public decimal roleid { get; set; } 

     public string name { get; set; } 
    } 

    public class EmpRoleModel 
    { 
     [Key] 
     [Column(Order = 0)] 
     [ForeignKey("Employee")] 

     public decimal empid { get; set; } 

     [Key] 
     [Column(Order = 1)] 
     [ForeignKey("Role")] 

     public decimal roleid { get; set; } 

     public virtual EmployeeModel Employee { get; set; } 
     public virtual RoleModel  Role  { get; set; } 
    } 

現在您可以通過EmployeeRoles屬性導航到員工角色。

請嘗試此代碼並給我反饋。