2012-01-25 40 views
0

我有一個在我的實體模型中定義的表。我也有在模型中的表上定義的外鍵導航屬性。如何從EntityDataSource訪問外鍵表中的數據?

Users 
- UserID 
- Username 
- UserGroupID 

Groups 
- GroupID 
- GroupName 

我有一個網格連接到一個EntityDataSource,它檢索並顯示Users表。我不需要爲每個用戶顯示UserGroupID標識列,而需要顯示相應的GroupName。是否有一種簡單的方法來從User對象中獲取GroupName,因爲它們在實體模型中連接在一起?

謝謝! Kevin

+0

我User表結合到電網。作爲設計時間,檢索列。我的目標是不顯示UserGroupID列,而是顯示外鍵表中的GroupName列。我只是使用EntityDataSource嚮導來指向users表。我如何指定myUser.UserGroup.Name?我確實設置了導航屬性。由於我的外鍵在SQL數據庫中,它們會自動設置。 – Kevin

+0

我想我的問題是我有所有定義的導航屬性,但是當我設置我的EntityDataSource時,它只是從用戶表中檢索列。你是否說它應該檢索用戶表和UserGroups表,由於定義的關係?因爲這不幸的是沒有發生。 – Kevin

回答

1

您應該在每個實體上設置關聯。代碼首先,它應該是這個樣子:

class User { 
    // user properties... 

    [ForeignKey("UserGroupID")] 
    public virtual Group Group { get; set; } 
} 

class Group { 
    // group properties... 
    public virtual ICollection<User> Users { get;set; } 
} 

然後,你可以致電:

user.Group.GroupName 
+0

我該怎麼做?所有內容都在圖形edmx文件中定義。班級在哪裏定義? – Kevin

+0

我想你使用的是模型優先的方法,而我錯誤地認爲你使用的是Code First。請參閱 - http://msdn.microsoft.com/en-us/library/bb738477.aspx關於如何使用圖形工具來設置關聯 – PinnyM

+0

好的,我知道如何添加關聯。當我在設計時綁定網格時,當我將EntityDataSource指向Users表時,UserGroup外鍵表是否可用(作爲列)? – Kevin