1

我有一组嵌套到各个级别的 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; }
}

我需要的是在那时而不是按主键对subModelsinModel进行排序,但我想不出最好的方法来做到这一点。似乎没有一个地方可以告诉它已经按该顺序从数据库中检索数据,当我尝试使用该属性时,我似乎无法在其上使用任何 Linq。几乎我唯一能做的就是以数据库吐出它们的任何顺序使用和枚举它。foo1foo2subModelIDsubModelsModelGetEnumerator()

如果这有什么不同,我正在使用 MySQL。

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

4

1 回答 1

0

如果您想显式加载导航属性,可以执行以下操作:

Model model;

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

这有点麻烦,但会起作用。不过,当您想使用它们时,似乎订购它们同样容易。

于 2013-03-01T20:52:15.253 回答