2011-06-18 31 views
0

エンティティクエリへの複雑なLINQがあり、冗長性の理由からクエリを再利用したいと考えています。クエリの再利用とインクルードメソッド

我々の問題説明するための例:別の使用例では

var query = from x in context.Building.Include("Kitchen") 
      select x; 

を、私たちは熱心な負荷にしたい「ベッドルーム」

var query = from x in context.Building.Include("Bedroom") 
      select x; 

はそれがを含める追加または変更することは可能です後で何か? 私はこのような何かを探しています:

var query = from x in context.Building select x; 
query.AddInclude("Kitchen"); 
query.AddIncldue("Other stuff"); 

クエリの再利用をどのように行うのですか?

答えて

2

いずれかのEF 4.1をダウンロードし、IQueryableにその強く型付けされた拡張子を使用するか、AddIncludeのような書き込みをしてみてください:あなたの答えのための

public static IQueryable<T> AddInclude(this IQueryable<T> query, string include) 
{ 
    if (String.IsNullOrEmpty(include)) 
    { 
     throw new ArgumetNullException("include"); 
    } 

    var objectQuery = query as ObjectQuery<T>; 

    if (objectQuery == null) 
    { 
     throw new InvalidOperationException(); 
    } 

    return objectQuery.Include(include); 
} 
+0

感謝を。 IQueryable に強く型付けされた拡張機能を追加したことは良いことです。 IncludeメソッドはObjectSet用であり、4.0のObjectQuery用ではありません。したがって、質問への答えはNOです(後でIncludeを追加または変更することは可能ですか?)。私は別の方法があると思った。 – yonexbat

関連する問題