2013-03-01 6 views
1

У меня есть набор моделей POCO, которые вложены в разные уровни и были созданы путем обратного проектирования существующей базы данных с силовыми структурами сущности. В какой-то момент у меня есть модель, которая выглядит примерно так:Задание сортировки

public partial class Model 
{ 
    public Model 
    { 
     this.subModels = new List<subModel>(); 
    } 
    public virtual ICollection<subModel> submodels { get; set; } 
} 

и подмодели, который выглядит примерно так:

public partial class subModel 
{ 
    public int subModelID { get; set; } 
    public int foo1 { get; set; } 
    public int foo2 { get; set; } 
} 

Что мне нужно для subModels в Model заказываются по foo1 затем foo2, а не основным ключом subModelID, но я не могу понять, как это сделать. Кажется, нет места, где я могу сказать, что он извлекает данные из базы данных уже в этом порядке, и когда я пытаюсь использовать свойство subModels на Model, я не могу использовать Linq на нем. Просто единственное, что я могу сделать, это использовать GetEnumerator() и перечислить его в любом порядке, в котором база данных их выплюнула.

Я использую MySQL, если это имеет значение.

Обновление: Хорошо, я могу использовать Linq, я просто забыл добавить заявление using. Прошла долгая неделя! Тем не менее, я хотел бы знать, можно ли сказать EF запрашивать данные в правильном порядке в первую очередь.

ответ

0

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

Model model; 

context.Entry(model) 
    .Collection(k => k.submodels) 
    .Query() 
    .OrderBy(p => p.foo1) 
    .ThenBy(p=> p.foo2) 
    .Load(); 

Это своего рода громоздким, но будет работать. Похоже, было бы так же легко заказать их, если вы хотите их использовать.