1
repo
.Where(x=>x.Id==id)
.Include(x=>x.History.Select(c=>c.ProductInfo)).FirstOrDefault();

上記のクエリは、特定のユーザーが購入したすべての製品を返す必要があり、製品の詳細が含まれている必要があります。動作するので、ナビゲーション プロパティに問題はありません。

Delivered今、製品をとに分割したいnotDelivered

               repo
               .Where(x => x.Id == id)
               .Include(x=>x.History.Select(c=>c.ProductInfo))
               .Select(x => 
                   new Details { User = x,
                                 notDelivered = x.History.Where(k=>!k.IsDelivered),
                                 Delivered=x.History.Where(k=>k.IsDelivered)})
               .FirstOrDefault();

製品を分割する必要がありますが、ProductInfo は常に null です。これが選択されない理由がわかりませんProductInfo

4

1 に答える 1

1

投影を使用する場合Includeは無視されます。ProductInfosタイプのプロパティをクラスに追加して、そのコレクションをプロジェクション内に埋めることができIEnumerable<ProductInfo>ます。Details

repo.Where(x => x.Id == id)
    .Select(x => 
        new Details { User = x,
                      notDelivered = x.History.Where(k=>!k.IsDelivered),
                      Delivered = x.History.Where(k=>k.IsDelivered),
                      ProductInfos = x.History.Select(k=>k.ProductInfo) })
    .FirstOrDefault();

関連付けの自動修正により、ロードされた が でロードされたかProductInfoのように、ロードされたHistoryエンティティに追加されIncludeます。

于 2013-09-08T14:25:32.407 に答える