2

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

class Foo {
   int FooId;
   string FooName;
}

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

我们还假设我希望默认情况下延迟加载“RelatedFoo”。

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

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

如果不是,这在另一个 .NET ORM 框架中是否可行?

4

1 回答 1

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)
于 2012-12-08T15:30:36.750 回答