2010-11-17 61 views
0

我的實體模型是從現有數據庫生成的。 EF提供並隱藏了多對多的聯結表。EF1導航屬性不起作用?

的關係肯定是工作,因爲此查詢的預期回報用戶。

public IQueryable<User> FindUsersByGroupID(int group_id) 
    { 
     return db.Users.Where(u => u.Groups.Any(g => g.Group_ID == group_id)); 
    } 

但是,當定位屬於上述結果集的用戶時,組導航屬性計數爲0.我不應該顯式加入..對嗎?

public User FindUserByID(int id) 
    { 
     return db.Users.First(u => u.User_ID == id); 
    } 

回答

2

嘗試

db.Users.Include("Groups").First(u => u.User_ID == id); 

if (!user.Groups.IsLoaded) 
{ 
    user.Groups.Load(); 
} 
+0

酷,感謝後加載它。你知道這是EF4中的相同行爲嗎?當其他表尚未包含時,導航屬性暴露出來似乎違反直覺。 – ryan 2010-11-17 21:21:45

+0

@ryan與EF4,你可以激活LazyLoading自動執行此操作 – 2010-11-17 21:25:41

+0

現在怎麼樣插入?我需要將新用戶與組關聯。我希望能夠設置User user = new User(); user.Groups.Group_ID = 1;也許我需要一種Include()在我的部分用戶類構造函數中? – ryan 2010-11-18 15:18:22