Родительский объект является нулевым при получении дочерних объектов с использованием Entity Framework - PullRequest
0 голосов
/ 26 апреля 2018
public class AcsBatchingDbContext : DbContext
{
    public DbSet<CardHolder> CardHolders { get; set; }
    public DbSet<AccessCard> AccessCards { get; set; }
}

public class CardHolder
{
    public int CardHolderId { get; set; }
    public ICollection<AccessCard> AccessCards { get; set; };
}


public class AccessCard
{

    public int AccessCardId { get; set; }
    public CardHolder CardHolder { get; set; }
}

Когда я пытаюсь получить AccessCards

using (var db = new AcsBatchingDbContext())
{
    var cards = db.AccessCards.ToList();
}

Где card.CardHolder = null

Почему? Почему EF не захватывает CardHolder?

Другой вопрос:

Почему это выражение не компилируется?

db.AccessCards.Include(x => x.CardHolder).ToList();

Почему единственные опции - это

db.AccessCards.Include("CardHolder").ToList();

1 Ответ

0 голосов
/ 27 апреля 2018

Вы должны использовать include для загрузки CardHolder сущности.

(для этого требуется using System.Data.Entity;)

db.AccessCards.Include(x => x.CardHolder).ToList();

В качестве альтернативы, вы можете применить Include вот так;

db.AccessCards.Include("CardHolder").ToList();
...