0

我在我的mvc2應用程序中設置了實體關係,因此每個用戶都有一個角色,每個角色都可以有多個用戶。像這樣:實體關係從數據庫中讀取不正確

Roles   Users 
--------  --------- 
RoleID--  UserID 
     \ 
Name  --> RoleID 

所以一個非常基本的許多人在數據庫中執行,並反映在我的實體關係圖一個關係。但是,當我嘗試獲取用戶的角色(user.Role.Name)時,它始終爲空,並且我在數據庫中看到用戶的角色被設置爲有效的ID。這是我第一次嘗試使用實體,因爲我之前一直使用LINQ2SQL,這只是讓我感到困惑。

什麼?

這是我的EDMX文件

http://cl.ly/a9c088698369a54fc770

的屏幕截圖在user表中有一個角色ID屬性(不知道爲什麼它沒有在圖中顯示)的數據庫,我自由能從用戶遍歷到角色,並且已知它是與編譯器的一對多關係,但它在嘗試查看用戶對象時僅返回爲空。

編輯:

這裏的查詢我使用

User user = db.Users.SingleOrDefault(u => u.Username == username); 
user.Role.Name 

我的用戶對象是不是null,任何其他屬性的可見只是看不見的作用,每個用戶都有一個角色。

+0

向我們展示您用來獲取用戶的查詢。你可能需要做一個Users.Roles.Load()來獲取它們。 – Martin 2010-10-21 18:11:54

+0

@Martin,回答這個問題,我會標記你的答案,我不知道你必須手動加載引用(我習慣了Linq2SQL) – Jimmy 2010-10-21 18:20:09

+0

我也是,從Linq2SQL開始,現在在我的最新項目中使用EF4。很多頭痛,但也有一些很酷的東西。 – Martin 2010-10-21 18:25:31

回答

1

你需要下載手動像任何引用:

Users.Roles.Load() 

額外的獎勵:

走出generic repository ...真棒。

0

查找模型瀏覽器中用戶和角色之間的關聯,然後確保Role屬性被定義爲Navigation Property

+0

http://cl.ly/a9c088698369a54fc770 – Jimmy 2010-10-21 17:31:57

+0

我沒有在用戶表中看到'RoleId'定義。它是否存在於底層數據庫中?這是POCO還是使用建模者定義的? – 2010-10-21 17:52:54

+0

POCO?有關更多詳細信息,請參閱我的編輯,RoleID存在於底層數據庫中,不確定爲何它未添加到顯示中。 – Jimmy 2010-10-21 18:17:35

相關問題