2012-04-20 13 views
1

状況に応じて、追加のテーブル「カテゴリ」と「製造元」を追加することがあるクエリメソッドがあります。ただし、クエリを実行するたびに、カテゴリと製造元のナビゲーションプロパティは常に空白になります。私は間違って何をしていますか?エンティティフレームワーク3 - ナビゲートプロパティNull with Varying Include()

private IQueryable<Item> GetQuery(ItemFilter filter, ItemCacheContainer context) 
    { 
     //Perform optional Joins 
     ObjectQuery<Item> query = context.Items; 

     if (filter.JoinCategory) 
      query.Include("Category"); 

     if (filter.JoinManufacturer) 
      query.Include("Manufacturer"); 

     return query.Where(i => 
       (!filter.ItemId.HasValue 
       || i.ItemId == filter.ItemId.Value)); 
    } 

はまた、ここで私はGetQueryメソッドを使用していますが、私はConvertItemFromCacheにブレークポイントを置くとき、私はそれらのヌルナビゲーションプロパティを参照してください方法です。

GetQuery(filter, context) 
    .ToList() 
    .ConvertAll(ConvertItemFromCache) 
    .SingleOrDefault(); 

ありがとうございます!

答えて

3

あなたはあなたの例ではそうquery.Include("...")

query = query.Include("Category"); 

の結果にqueryを設定する必要があります。

if (filter.JoinCategory) 
query = query.Include("Category"); 

if (filter.JoinManufacturer) 
query = query.Include("Manufacturer"); 
+0

、あなたは* filter.ItemId.HasValue *のための同じを追加することができますしてください!? –

+0

@AdrianIftode - 彼はメソッド – Aducci

+0

からそれを返すので、彼はそれにクエリを設定する必要はありません!私の心は完全にそれを設定するためにスリップしました。ありがとう! – strongriley

関連する問題