说我的对象图看起来像:
User
=> Friends
=> Clicks
=> Urls
所以当我加载一个用户时,我也希望eagirly加载导航属性Friends。我希望朋友对象能够加载点击等等。
使用我现在拥有的代码,我只能在1级执行此操作:
public User GetUserById(int userId)
{
return Get(x => x.Id == userId, includeProperties: "Friends").FirstOrDeafult();
}
这可能吗?
答案 0 :(得分:1)
显然,此存储库实现只是用逗号(includeProperties
)拆分includeProperties.Split(new char[] { ',' }
参数,然后调用
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();