指定排序

本文关键字:排序 | 更新日期: 2023-09-27 18:01:42

我有一组嵌套到不同层次的POCO模型,这些模型是通过使用实体框架powertools对现有数据库进行逆向工程生成的。我有一个模型,看起来像这样:

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; }
}

我需要的是Model中的subModelsfoo1然后foo2排序,而不是由主键subModelID排序,但我不能找出最好的方法来做到这一点。似乎没有一个地方,我可以告诉它从数据库中检索数据已经在这个顺序,当我尝试使用subModels属性在Model我似乎不能使用任何Linq上。我唯一能做的就是使用GetEnumerator(),并以数据库吐出它们的顺序枚举它。

我用MySQL,如果这有任何区别。

更新:好吧,我可以使用Linq,我只是忘记添加using语句。这是漫长的一周!不过,我想知道是否有可能告诉EF在第一时间以正确的顺序查询数据。

指定排序

如果你想显式加载你的导航属性,你可以这样做:

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

这有点麻烦,但可以工作。不过,当你想使用它们的时候,订购它们似乎也一样容易。