0

假设我的对象图如下所示:

User
 => Friends
   => Clicks
     => Urls

因此,当我加载用户时,我也想快速加载导航属性 Friends。我希望朋友对象能够快速加载 Clicks 等等。

使用我现在拥有的代码,我只能为 1 个级别执行此操作:

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

这可能吗?

4

1 回答 1

2

显然这个存储库实现只是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();
于 2013-07-12T21:20:17.967 回答