2012-02-21 3 views
0

に参加している間、私は、エンティティフレームワークを設定していると私は、次の関係の設定があります。ロードEF関係実行が

  • AdListing(AdListingID、タイトル、詳細)
  • AdListingLocation(AdListingが複数の場所を持つことができます:AdListingIDを、 EFではLocationID)
  • 場所(LocationID、国、都市)

私は、市は、 "ニューヨーク" であるすべてのAdListingsを返したい

また、AdListingLocation関係(他のものと同様)もロードしたいと思います。別の投稿では、私が手動で結合を行うことは許されていないことを私は知っています。インクルード。どのように私は両方を達成することができますか?

var results = (from a in db.AdListings.Include("AdListingPhotos").Include("AdListingLocations") 
       where a.AdListingLocations.Location.City = "New York" 
       select a).ToList(); 
+0

あなたが参加し、マニュアルとはどういう意味ですか: – Dismissile

答えて

1
var results = from a in db.AdListings 
       where a.AdListingLocations.Location.City == "New York" 
       select a; 

return results 
     .Include(a => a.AdListingPhotos) 
     .Include(a => a.AdListingLocations) 
     .ToList(); 

はちょうどこのラインを入れ含める上のラムダ構文を取得するには? where a.AdListingLocations.Location.City == "New York"は実際に手動での参加ではありません。クエリによって結合が作成されますが、その関係をナビゲートするだけです。
+0

私はあなたの提案を試みたときにエラーが発生しました: 'System.Linq.IQueryable 'には 'Include'の定義が含まれておらず、 'Include' System.Linq.IQueryable 'が見つかりました(usingディレクティブまたはアセンブリ参照がありませんか?) – TheWebGuy

+0

System.Data.Entityを使用して追加しましたか? – Dismissile

+0

私はあなたが指定したusingステートメントを含め、System.Data.Entityとそのバージョン "4.0.0.0"とランタイムバージョン "v4.0.30319"のバージョンをチェックしました。 – TheWebGuy

0

クエリの後に.Include()コールを移動しようとしましたか?

var results = (from a in db.AdListings 
      where a.AdListingLocations.Location.City = "New York" 
      select a).Include("AdListingPhotos").Include("AdListingLocations").ToList(); 

これで、クエリで結合を実行できるはずです。

これはテストしていないため、期待通りに動作しない可能性があります。

using System.Data.Entity;