次のラムダ コードを使用して、リンクされたテーブル フィールドにアクセスしようとしています。
DateTime dtStartDate = "1/1/2013"; // or some date
var jobs = db.jobs.Include(d => d.docs)
.Where(d => d.docs.duedate >= dtStartDate);
SQL Server のテーブル リレーションシップ キーは次のとおりです。
jobs.JobID = docs.JobID
// Note: Check Existing Data = No.
では、上記のコードの 1 行目と 2 行目で次の操作を実行しようとすると、上記のコードが機能しないのはなぜですか。
// errors here
// .duedate can't be found through the .Include() table, docs
d.docs.duedate
エラーは言う:
'System.Collections.Generic.ICollection' には 'duedate' の定義が含まれておらず、タイプ 'System.Collections.Generic.ICollection' の最初の引数を受け入れる拡張メソッド 'duedate' が見つかりませんでした (using ディレクティブがありませんか?またはアセンブリ参照?)
Entity Framework によって生成されるクラス コード:
public partial class jobs
{
public jobs()
{
this.docs = new HashSet<docs>();
}
public int JobID { get; set; }
public virtual ICollection<docs> docs { get; set; }
}
public partial class docs
{
public int DocumentID { get; set; }
public Nullable<int> JobID { get; set; }
public Nullable<System.DateTime> duedate { get; set; }
public virtual jobs jobs { get; set; }
}
DB と一致するように Visual Studio でモデルを更新しましたが、それでも機能しません。理由はありますか?ご協力ありがとうございました。