Include()メソッドは、オブジェクトのリストに対して非常にうまく機能します。しかし、もし私が2つのレベルを深く掘り下げる必要がある場合はどうなりますか?たとえば、以下のメソッドは、ここに示されているプロパティを含むApplicationServerを返します。ただし、ApplicationsWithOverrideGroupは、他の複雑なオブジェクトを保持する別のコンテナーです。そのプロパティでInclude()も実行できますか?または、そのプロパティを完全にロードするにはどうすればよいですか?
今のところ、このメソッドは:
public IEnumerable<ApplicationServer> GetAll()
{
return this.Database.ApplicationServers
.Include(x => x.ApplicationsWithOverrideGroup)
.Include(x => x.ApplicationWithGroupToForceInstallList)
.Include(x => x.CustomVariableGroups)
.ToList();
}
Enabledプロパティ(下記)のみを入力し、ApplicationまたはCustomVariableGroupプロパティ(以下)は入力しません。これを実現するにはどうすればよいですか?
public class ApplicationWithOverrideVariableGroup : EntityBase
{
public bool Enabled { get; set; }
public Application Application { get; set; }
public CustomVariableGroup CustomVariableGroup { get; set; }
}
Expression must be a member expression
これを試したときに例外が発生する理由:コレクションを1レベル下に含めるには:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection))
。