实体框架可以按相关实体的属性对实体进行排序吗?

时间:2012-12-08 15:13:32

标签: entity-framework orm

假设我有以下“Foo”和“Bar”实体:

class Foo {
   int FooId;
   string FooName;
}

class Bar {
   int BarId;
   Foo RelatedFoo;
   string BarName;
}

我们还假设我希望“RelatedFoo”默认是延迟加载的。

在Entity Framework中,是否可以执行一个返回可枚举“Bar”实体的查询,其中元素按“bar.RelatedFoo.FooName”排序?

如果是这样,可以在固定数量的数据库查询中完成吗?我想避免做N+1 queries

如果没有,这可能在另一个.NET ORM框架中吗?

1 个答案:

答案 0 :(得分:1)

var bars = _context.Bars.OrderBy(b => b.RealtedFoo.FooName)

您可能还希望仅返回RealtedFoo不为空的栏

var bars = _context.Bars.Where(b => b.RelatedFoo != null).OrderBy(b => b.RealtedFoo.FooName)

<强>更新

    //For EF only
    _context.Configuration.LazyLoadingEnabled = false

    //If you want to bring back RealtedFoo then include it. 
//Otherwise, you can just query for it and not use the Include() extension.
    var bars = _context.Bars.Include(b => b.RealtedFoo).Where(b => b.RelatedFoo != null).OrderBy(b => b.RealtedFoo.FooName)