2016-11-01 11 views
0

次のコードは、productの場合はnullを返します。関連するエンティティをロードする方法

var product = Context.Tours 
    .Where(t => t.TourId == sale.TourId) 
    .Select(t => t.Product) 
    .First(); 

どのようにこれを行う必要がありますか?

+0

ツアーと商品の関係はどのようになっていますか? 1- *? – octavioccl

+1

私はあなたのモデルを見ることができないので、何かをするのは非常に難しいです。わかったら、それは次のようになります: int id = Context.Product.Where(t => t.TourID == sale.TourId); またはオクタビオクの答えのように。しかし、あなたのモデルを表示すると、より良い回答を得ることができます –

答えて

1

使用Include拡張メソッド:あなたはvirtualとして、あなたのナビゲーションプロパティを定義し、遅延ロードを無効にしない場合は

var product = Context.Tours 
    .Include(e=>e.Product) 
    .Where(t => t.TourId == sale.TourId) 
    .Select(t => t.Product) 
    .First(); 

、その後、関連するエンティティが自動的にデータベースからアクセスされた最初の時間をロードされます。

+0

なぜインクルードなしで製品を読み込めないのですか? –

+0

'Include'メソッドを使用すると、クエリの一部として関連エンティティをロードすることを明示的に指示していますが、前述のように、プロパティは 'virtual'であり、最初にアクセスされるときにロードされるべきです。あなたのモデルにあなたの質問を追加してください。あなたが達成しようとしていることをする良い方法があるかもしれません。 – octavioccl

+0

この[リンク](https://msdn.microsoft.com/nl-nl/library/dd468057(v = vs.100).aspx)は、遅延を有効にする場合に、エンティティを満たす必要がある要件を理解するのに役立ちますloading – octavioccl

関連する問題