LINQ Multiple ThenInclude в ядре EF не заполняет вложенные данные - PullRequest
0 голосов
/ 11 мая 2019

Я знаком с печально известной ошибкой intellisense, которая не позволяет Visual Studio отображать вложенные данные в качестве допустимого типа, но в этом случае действительный тип не заполняется, и я не могу понять, почему.Вот структура данных:

public class Expense : AuditableEntity
{
    public int Id { get; set; }
    public ExpenseCategory Category { get; set; }
}

, а дочерний класс расходов:

public class ExpenseCategory : AuditableEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
}

вот метод доступа в linq:

_appContext.UserProperties
                 .Include(userProp => userProp.Property)
                     .ThenInclude(prop => prop.Expenses)
                         .ThenInclude(expense => expense.Category)
                 .Where(c => c.UserId == userId)
                 .SelectMany(x => x.Property.Expenses)
                 .ToList();

все заполняетсяза исключением категории расходов, и не выдается никакой ошибки, она просто возвращает нуль для категории, есть ли в LINQ что-то, что выглядит неправильно?

Еще раз все остальное заполняется, за исключением категорий расходов на третьем уровне без ошибок и все компилируется.

[ОБНОВЛЕНИЕ]

Это как-то связано сОператор LINQ, если я изменяю на:

_appContext.UserProperties
                 .Include(userProp => userProp.Property)
                     .ThenInclude(prop => prop.Expenses)
                         .ThenInclude(expense => expense.Category)
                 .Where(c => c.UserId == userId)
                 .SelectMany(userProp => userProp.Property.Expenses)
                 .Select(expense => expense.Category)
                 .ToList();

Теперь он возвращает только категории и ничего больше .... перейти к рисунку

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