2013-07-12 35 views
0

说我的对象图的样子:如何急切地包括导航性能的子对象

User 
=> Friends 
    => Clicks 
    => Urls 

所以,当我打开一个用户,我也想eagirly加载导航属性朋友。而且我希望朋友对象能够轻松加载点击等。

使用代码我现在我只能为1级做到这一点:

public User GetUserById(int userId) 
{ 
    return Get(x => x.Id == userId, includeProperties: "Friends").FirstOrDeafult(); 
} 

这可能吗?

回答

1

显然,这个仓库实现就象是分割用逗号(includeProperties.Split(new char[] { ',' })的includeProperties参数存储库模式,然后调用

query = query.Include(includeProperty); 

对于拆分结果数组中的每个元素。为了您的例子中,你可以使用一个虚线路径则:

return Get(x => x.Id == userId, includeProperties: "Friends.Clicks.Urls") 
    .FirstOrDefault(); 

它会加载所有实体的路径上从根User实体到最后的导航属性Urls

如果你有在User另一个导航属性 - 说Profile - 你会想急切地加载,以及,似乎这句法支持则:

return Get(x => x.Id == userId, includeProperties: "Profile,Friends.Clicks.Urls") 
    .FirstOrDefault(); 
+0

怎么样设置排序依据为孩子他们加载时的集合?这可能吗? – loyalflow

+0

@ user1361315:这不是直接可能的,只有一些解决方法:http://stackoverflow.com/questions/7522784/ef-4-1-code-first-how-to-order-navigation-properties-when-using -include和 - 或 – Slauma

相关问题