1

次のラムダ コードを使用して、リンクされたテーブル フィールドにアクセスしようとしています。

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 でモデルを更新しましたが、それでも機能しません。理由はありますか?ご協力ありがとうございました。

4

1 に答える 1