2012-02-17 5 views
0

私は髪を引き出しているのですが、どうして私がAdPhotosとLocationエンティティを返せないのか分かりません。私は.ToList()を使用してAdPhotosコレクションをそのまま維持すべきですか?EFで作業がうまくいかない

リターンにブレークポイントを配置すると、AdPhotosとLocationのデータが表示されますが、その後は消えます。

public List<AdListing> LatestAdListings() 
{ 
    using (var db = new AdultdirectoryEntities()) 
    { 
     var results = (from a in db.AdListings.Include("AdPhotos").Include("Location") 
         join l in db.Locations on a.LocationID equals l.LocationID 
         where a.Approved && l.CountryID == Constants.ItemKeys.UsCountryId && a.AdPhotos.Count > 0 
         orderby a.CreateDateTime descending 
         select a).Take(5).ToList(); 

     return results; 
    } 
} 
+0

を(http://msdn.microsoft.com/en-us/library/bb896272.aspx)私は "Includeを呼び出すと、クエリパスはObjectQueryの返されたインスタンスでのみ有効です。ObjectQueryの他のインスタンスとオブジェクトコンテキスト自体は影響を受けません。" これは私の問題だと思います。誰かが完全な関係を返すためのよりよい解決策を持っていますか? – TheWebGuy

答えて

1

Includeの呼び出しには手動結合が続きます。これはサポートされていません。手動ジョインまたはプロジェクションを使用すると、クエリの形状が変更され、Includeコールはすべて失われます。また

あなたはあなたのようなクエリ書くことができますので、参加する必要はありません。このページ

var results = (from a in db.AdListings.Include("AdPhotos").Include("Location") 
       where a.Approved && a.Location.CountryID == Constants.ItemKeys.UsCountryId && a.AdPhotos.Count > 0 
       orderby a.CreateDateTime descending 
       select a).Take(5).ToList(); 
+0

ありがとうございます!これは助けになりました。もう一つ質問があります。 idが "Location"関係の中で別の関係をしたいのであれば、どうすればいいのですか? – TheWebGuy

関連する問題