2009-09-11 47 views
0

我有以下數據庫表:實體框架V1造型多到許多查找表的關係

表1:用戶
用戶ID
用戶名

表2:角色
角色ID
ROLENAME

表3: UserRole
UserId
RoleId

用戶可以擁有多個角色,角色可以擁有多個用戶。 當我使用EF進行建模時,我得到一個帶有UserRole實體列表的User實體。我想要的是一個具有角色實體列表的用戶。

有沒有一種方法可以通過LINQ建模或查詢來返回用戶實體和它們所屬的角色實體?

感謝
德克

回答

0

如果建模許多一對多的關係,在中間的表將不會出現在您的概念模型。 (即,您將沒有從「EntityObject」派生類「UserRole」)

如果使用EF嚮導,請確保您的表「UserRole」只有這兩個字段而沒有其他字段。還要確保您已在兩個字段上創建了外鍵約束。如果你有,那麼該向導將創建一個適當的多對多關係。

查詢然後可能看起來像

using(MyObjectContext context = new MyObjectContext(someParameters)){ 
    var theUser = (from user in context.UserSet 
        where user.UserId = XY 
        select user).First(); 
    theUser.Roles.Load(); 
} 
+0

出於某種原因(廢話!)我把審計列在表中的UserRole,所以當然它模擬的許多一對多的關係不正確。我刪除了審計列後,它正確映射。感謝你的回答。 – Dirk 2009-09-14 20:27:42

+0

您也可以在表中使用多關係,只有fk字段(如果在應用程序中不需要這些其他字段)。但是要做到這一點,你必須深入挖掘edmx文件的xml代碼。 – Chrigl 2009-09-15 11:28:55