私は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; }
}
どのように適切に関連するエンティティをロードしていますか?
それは例外が私に言ったものだように聞こえる - あなたは
ICollection<T>
か(例えば、IList<T>
用)、そこから派生する別のインターフェイスまたはICollection<T>
の具体的な実装を使用する必要があります。説明をありがとう。 – RichIEnumerableがサポートされていない理由を説明してください。 - 私は愛することを愛するだろう。 –
series0ne