0

オブジェクト グラフが次のようになっているとします。

User
 => Friends
   => Clicks
     => Urls

そのため、User を読み込むときに、ナビゲーション プロパティの Friends も簡単に読み込みたいと考えています。そして、友人オブジェクトがクリックなどを簡単にロードできるようにします。

私が今持っているコードを使用すると、これは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 に答える