EF Core: Order By вложенной загруженной коллекции - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть сценарий использования с глубоко вложенной иерархией классов, например, такой:

public class Parent
{
    public int Id { get; set; }

    public List<ChildOne> Children { get; set; }
}


public class ChildOne
{
    public int Id { get; set; }
    public int ParentId { get; set; }

    public List<ChildTwo> ChildrenTwo { get; set; }
}


public class ChildTwo
{
    public int Id { get; set; }
    public int Priority { get; set; }

    public int ChildOneId { get; set; }

    public List<ChildThree> ChildrenThree { get; set; }
}


public class ChildThree
{
    public int Id { get; set; }

    public int ChildTwoId { get; set; }
}

Если я хочу загрузить все родительские объекты и связанные с ними дочерние уровни, я бы сделал это:

var objects = context.Parent
    .Include(parent => parent.Children)
        .ThenInclude(childOne => childOne.ChildrenTwo)
            .ThenInclude(childTwo => childTwo.ChildrenThree)
    .ToList();

Но что, если я хочу, чтобы мои ChildrenTwo сущности в загруженном с нетерпением навигационном свойстве ChildOne были упорядочены по их Priority?Я провел некоторое исследование, и по ссылкам ниже (и некоторым другим) это явно не возможно в EF Core (пока):

Итак, как вы можете достичь порядка ChildrenTwo выше (на Priority) хорошим / чистым способом, который будет быстрым?Это, вероятно, означает, что большая часть работы должна выполняться на сервере БД, а не на стороне клиента .NET.Какой лучший подход здесь?

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