Вложенный выбор EF Core является нулевым для объекта 3-го уровня - PullRequest
0 голосов
/ 08 мая 2019

У меня следующая структура БД:

User --> Membership <-- Org <-- Basic (basic info)
                         ^----- Contacts (org contacts)
                         ^----- Invoice
                                   ^----- Contacts (invoice contacts)

Следующий запрос возвращает Invoice.Contacts = null.

var userOrgs = await _context.Memberships
    .Include(p => p.User)
    .Include(p => p.Org)
        .ThenInclude(p => p.Basic)
    .Include(p => p.Org)
        .ThenInclude(p => p.Contacts)
    .Include(p => p.Org)
        .ThenInclude(p => p.Invoice)
            .ThenInclude(p => p.Contacts)
    .Where(p => p.User.Id == request.UserId)
    .Select(p => new GetUserOrgsResponse
    {
        OrgId = p.Org.Id,
        Basic = p.Org.Basic,
        Contacts = p.Org.Contacts,
        Invoice = p.Org.Invoice,  // <<-- result will have Invoice.Contacts = null
        InsertDate = p.InsertDate,
        Roles = p.Roles.Select(s => s.ToString().ToLower()).ToArray()
    })
    .ToListAsync(cancellationToken);

Все отлично, если не используете .Select(p => new GetUserOrgsResponse { ... }) но просто уходит .ToListAsync(cancellationToken)

Как мне исправить этот запрос, чтобы он возвращал список GetUserOrgsResponse, который также включает Invoice.Contacts (сущность 3-го уровня)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...