3

Code First と EF 5.0 を使用してナビゲーション プロパティを読み込もうとしています。子オブジェクトが null として読み込まれています。以下はコードです。

  [Table("ls_roles")]
    public class Role
    {
        [Required]
        [Key]
        public int RoleID { get; set; }

        [Required]
        public String BarColor { get; set; }

        [ForeignKey("RoleId")]
        public virtual ICollection<ScheduleEmployee> Employees { get; set; }
    }

    [Table("ls_ScheduleEmployee")]
    public class ScheduleEmployee
    {
        [Key]
        [Required]
        public int Id { get; set; }

        [Required]
        public int RoleId { get; set; }

        [ForeignKey("RoleId")]
        public  Role Role { get; set; }
    }

編集:呼び出しコード

class Program
{
    static void Main(string[] args)
    {
        var x = new Model.ContextEntityFramework().ScheduleEmployees.FirstOrDefault();
    }
}

x.Role == この時点で null

4

4 に答える 4

8

遅延読み込みを機能させるには、クラスのすべてのプロパティを仮想として定義する必要があります。これは、Entity Framework が遅延読み込みをサポートするプロキシ オブジェクトを作成するために必要です。

詳しくはこちらをご覧ください。

于 2013-03-11T15:53:39.830 に答える
7

子を含めるには、呼び出しコードで.includeを実行する必要があります。

何かのようなもの

Model.ContextEntityFramework().ScheduleEmployees.Include(x => x.Role).FirstOrDefault();
于 2013-03-11T15:52:09.553 に答える
1

Roleクラスは、コレクションForeignKeyで属性をまったく使用する必要はありません。EFは、オブジェクトとその属性の使用にEmployees基づいてマッピングを行うことを自動的に認識します。ScheduleEmployeeForeignKey

于 2013-03-11T15:47:11.023 に答える