2010-01-29 50 views
0

我有一個數據庫包含用戶和角色。表中的用戶具有對錶角色的引用,因爲每個用戶都綁定到一個角色(只有一個)。 當我使用LINQ來檢索用戶時,字段「角色」在數據網格中顯示爲一個整數(這是表角色的主鍵)。但是,我想用角色表的實際名稱字段替換用戶的字段角色。任何想法如何做到這一點?Linq替換字段的子查詢

datacontext的代碼現在是默認的,我應該用什麼linq查詢來獲得我需要的?

public IQueryable<Usuarios> GetUsuarios() 
{ 
     return this.ObjectContext.Usuarios; 
} 
+0

如果你正在使用實體框架/ LINQ來做任何事情,可以這樣標記它。 – 2010-01-29 11:40:36

回答

1

的規範的方式做這將是爲您的數據網格視圖特定的模型,並使用LINQ選擇成特定於視圖的模型。我的例子假定LINQ to SQL。

public IEnumerable<UserWithRoles> GetUsersWithRoles() 
{ 
    return this.ObjectContext 
       .Users 
       .Select(u => new UserWithRole { Name = u.Name, ..., Role = u.Roles.First().Name }); 
} 
+0

只是與此有關的另一個問題。如果我使用這個解決方案,我仍然可以使用主/細節功能嗎?我的意思是,如果我使用Grid上的SelectedItem來設置Detail控件,它會使用User還是UserWithRoles?如果是後者,我怎麼能回到原來的用戶? 謝謝! – brafales 2010-01-29 13:02:19

+0

我認爲你只需要在數據源上標識正確的方法來返回一個具體的視圖模型(或者實際的業務對象,如果它們是相同的)。請注意,您需要在您的主視圖模型中包含ID(可能),該ID將對應於要檢索的正確詳細信息項。 – tvanfosson 2010-01-29 14:24:27

0

這樣做是爲了早期綁定角色的用戶:

return this.ObjectContext.Usuarios.Include("Roles");