3

私は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 列) プロパティにアクセスする方法はありますか?

4

1 に答える 1