У меня есть сценарий использования с глубоко вложенной иерархией классов, например, такой:
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.Какой лучший подход здесь?