2011-10-29 87 views
4

私はSingleOrDefaultエンティティの関連エンティティをロードしようとしているが、私は次の例外を取得しています:私はIEnumerableをタイプの関連エンティティをロードするにはどうすればよい<T>

タイプのIEnumerableのナビゲーションプロパティは、単一の実装ではありませんタイプICollection

私はこれをいくつかの方法で試してみましたが、文脈に対する各クエリで同じエラーが発生しました(私はコメントに他の方法を含めました)。ここで

using(var context = CustomObjectContextCreator.Create()) 
     { 
      return context.Job.Include("Surveys").Include("SiteInfoes") 
     .Where(r => r.Jobid == jobId).SingleOrDefault(); 

      //context.ContextOptions.LazyLoadingEnabled = false; 
      //var Job = context.Job.Where(r => r.Jobid == jobId).SingleOrDefault(); 
      //context.LoadProperty(Job, "Surveys"); 
      //context.LoadProperty(Job, "SiteInfoes"); 

      //var Job = (from j in context.Job 
      //     .Include("Surveys") 
      //     .Include("SiteInfoes") 
      //    select j).SingleOrDefault(); 

      //var Job = context.Job.Where(r => r.Jobid == jobId).SingleOrDefault(); 
      //var surveys = context.Surveys.Where(s => s.JobID == jobId); 
      //var wellInfoes = context.SiteInfoes.Where(w => w.Jobid == jobId); 
      //Job.Surveys = surveys.ToList(); 
      //Job.SiteInfoes = wellInfoes.ToList(); 

      //return Job; 
     } 

私が使用しているPOCOオブジェクトは、次のとおりです。

public class Job 
    { 
     public int? Jobid { get; set; } 
     public string JobLocation { get; set; } 
     public string JobName { get; set; } 
     public virtual IEnumerable<Survey> Surveys { get; set; } 
     public virtual IEnumerable<SiteInfo> SiteInfoes { get; set; } 
    } 

public class Survey 
    { 
     public int SurveyID { get; set; } 
     public int? JobID { get; set; } 
     public DateTime? DateTime { get; set; } 
     public string Report { get; set; } 
     public virtual Job Job { get; set; } 
    } 

public class SiteInfo 
    { 
     public int Jobid { get; set; } 
     public string SiteLocation { get; set; } 
     public virtual JobInfo JobInfo { get; set; } 
    } 

どのように適切に関連するエンティティをロードしていますか?

答えて

5

IEnumerable<T>は、ナビゲーションコレクションのタイプとしてサポートされていません。 List<T>のような、HashSet<T>など

+0

それは例外が私に言ったものだように聞こえる - あなたはICollection<T>か(例えば、IList<T>用)、そこから派生する別のインターフェイスまたはICollection<T>の具体的な実装を使用する必要があります。説明をありがとう。 – Rich

+1

IEnumerable がサポートされていない理由を説明してください。 - 私は愛することを愛するだろう。 – series0ne

2

これは、IEnumerableではなくICollectionが必要なためです。

関連する問題