0

この include ステートメントを短縮する方法はありますか?

var query = Context.Businesses
 .Include(b => b.Categories)
 .Include(b => b.Branches.Select(br => br.Address))
 .Include(b => b.Branches.Select(br => br.BranchType))
 .Include(b => b.Branches.Select(br => br.CustomFields))
 .Include(b => b.Branches.Select(br => br.Phones))
 .Include(b => b.Branches.Select(br => br.OpeningTimes.Select(ot => ot.WorkingPeriods)));

SPROC を使用することを考えましたが、返されたものがどのように認識されるかわかりません。

それで、これをそれよりも短くするためのハードコードされていない方法はありますか? Branchおそらく、 ?のすべてのプロパティを処理する外部ラムダです。

4

1 に答える 1

1

この質問への回答と同様のことができます。したがって、あなたの場合、次のような拡張メソッドを作成します。

public static class DataContextExtensions
{
   public static IQueryable<Business> BusinessesComplete(this DataContext context){
         return context.Businesses
             .Include(b => b.Categories)
             .Include(b => b.Branches.Select(br => br.Address))
             .Include(b => b.Branches.Select(br => br.BranchType))
             .Include(b => b.Branches.Select(br => br.CustomFields))
             .Include(b => b.Branches.Select(br => br.Phones))
             .Include(b => b.Branches.Select(br => br.OpeningTimes.Select(ot => ot.WorkingPeriods)));
     }
}

次に、次のように使用します。

Business business = context.BusinessesComplete().Where(b => ...etc);
于 2013-04-24T13:17:07.890 に答える