私は2つのエンティティを持っています:
public class Parent
{
public Guid Id { get; set; }
public string Name { get; set; }
}
public class Child
{
public Guid Id { get; set; }
public string Name { get; set; }
public Parent Parent { get; set; }
}
Include を使用して、親の有無にかかわらず Child エンティティをクエリできます。
public void Test()
{
var child = context.Set<Child>().Include(x => x.Parent)
.FirstOrDefault(x => x.Id == Guid.Parse("<some_id>"));
}
しかし、場合によっては、すべての親エンティティが既にメモリにキャッシュされており、結合をスキップして、Id プロパティのみをロードして子エンティティをクエリしたい場合があります。そして、ID によってキャッシュから実際の親を取得します。
public void Test()
{
var cachedParents = new List<Parent>();
var child = context.Set<Child>()
.FirstOrDefault(x => x.Id == Guid.Parse("<some_id>"));
var parent = cachedParents.FirstOrDefault(x => x.Id == child.Parent.Id);
}
しかし、子は child.Parent == null でロードされます。
child.Parent をロードする方法や、単に child.Parent.Id (ParentId 列) プロパティにアクセスする方法はありますか?