2016-10-13 10 views
0

私は、作業パターンのリポジトリとユニットを使用していますし、リポジトリと作業単位:エンティティ無負荷外部キーの値に基づいて

CourseInstructorエンティティ

[Serializable] 
public class CourseInstructor : AuditableEntity 
{   
    #region Primitive Properties 
    [Required(ErrorMessage = "CourseID is required.")] 
    [ForeignKey("Course")] 
    public int CourseID { get; set; } 

    [Required(ErrorMessage = "StudentID is required.")] 
    [ForeignKey("Student")] 
    public int PersonID { get; set; } 
    #endregion 

    #region Navigation Properties 

    public Course Course { get; set; } 
    public Person Student { get; set; } 
    #endregion 
} 
は、次のように私のクラスは、

人物団体

[Serializable] 
public class Person : AuditableEntity 
{ 
    #region Primitive Properties 
    [Required(ErrorMessage = "LastName is required."), StringLength(50, ErrorMessage = "LastName is too long!")] 
    public string LastName{ get; set; } 


    [Required(ErrorMessage = "FirstName is required."), StringLength(50, ErrorMessage = "FirstName is too long!")] 
    public string FirstName{ get; set; } 

    [Required(ErrorMessage = "HireDate is required.")] 
    public DateTime? HireDate{ get; set; } 

    [Required(ErrorMessage = "EnrollmentDate is required.")] 
    public DateTime? EnrollmentDate{ get; set; } 

    #endregion 

    #region Navigation Properties 

    public virtual ICollection<CourseInstructor> CourseInstructor{ get; set; } 
    //Have other navigation properties to some other entities 

    #endregion 
} 

コースエンティティ

[Serializable] 
public class Course : AuditableEntity 
{ 
    #region Primitive Properties 
    [Required(ErrorMessage = "Title is required."), StringLength(100, ErrorMessage = "Title is too long!")] 
    public string Title 
    {get;set;} 

    [Required(ErrorMessage = "Credits is required.")] 
    public int Credits 
    {get;set;} 

    [Required(ErrorMessage = "DepartmentID is required.")] 
    public int DepartmentID 
    {get;set;} 
    #endregion 

    #region Navigation Properties 
    public Department Department { get; set; } 


    public virtual ICollection<OnlineCourse> OnlineCourses 
    {get;set;} 
    public virtual ICollection<OnsiteCourse> OnsiteCourses 
    {get;set;} 
    public virtual ICollection<StudentGrade> CourseStudentGrades 
    {get;set;} 
    public virtual ICollection<CourseInstructor> CourseInstructor 
    {get;set;} 
    #endregion 
} 

CourseInstructorConfig

public class CourseInstructorConfig : MyProjectConfig<CourseInstructor> 
{ 
    public CourseInstructorConfig() 
    {  
     base.HasRequired<Course>((CourseInstructor a) => a.Course) 
      .WithMany((Course c) => c.CourseInstructor) 
      .HasForeignKey<int>((CourseInstructor d) => d.CourseID); 

     base.HasRequired<Person>((CourseInstructor w) => w.Student) 
      .WithMany((Person p) => p.CourseInstructor) 
      .HasForeignKey<int>((CourseInstructor q) => q.PersonID); 
    } 
} 

CourseConfig

public class CourseConfig : MyProjectConfig<Course> 
{ 
    public CourseConfig() 
    { 
     base.HasRequired<Department>((Course c) => c.Department) 
      .WithMany((Department d) => d.Courses) 
      .HasForeignKey<int>((Course cs) => cs.DepartmentID);    
    } 
} 

CourseInstructorManager

public class CourseInstructorManager 
{ 
    public static List<CourseInstructor> GetCourseInstructor() 
    { 
     return new CourseInstructorRepository().GetAll().ToList(); 
    } 
} 

私はCourseInstructorのデータは、私がnullとして学生のもNULL値としてコースの値を取得しています取得しようとしています。誰も私の上記のコードの問題点を教えてもらえますか?または私は修正や追加を行う必要がありますか?どのように私はそれらentititesをbrongすることができ、CO及びpが両方ともNULLで

List<CourseInstructor> c = CourseInstructorManager.GetCourseInstructor(); 
Course co = c[0].Course; 
Person p = c[0].Student;  

enter image description here

を地下鉄Filles。

+0

あなたがここに巨大なコードを貼り付けることになっていません。あなたの質問が長すぎる場合、あなたはほとんど答えを得ることはありません。しかし、まず私の心の中にあるのは、あなたがLazyLoading *を無効にしたことです。 [関連エンティティの読み込みの例](http://stackoverflow.com/documentation/entity-framework/4678/loading-related-entities#t=201610130557286924715)を参照し、これらのオプションのいずれかを使用してエンティティを読み込みます。 –

+0

明確な理解を得るには、完全なコードが必要でした。ここに基本クラスだけを貼り付けました。 – captainsac

+0

@AdilMammadov貼り付けた実際のコードを見ると、** LazyLoading **が有効になります。 –

答えて

1

遅延ロードでデータをロードする場合は、virtualキーワードを使用する必要があります。だからあなたのCourseInstructorが、このことについて

public class CourseInstructor : AuditableEntity 
{   

    #region Primitive Properties 
    [Required(ErrorMessage = "CourseID is required.")] 
    [ForeignKey("Course")] 
    public int CourseID { get; set; } 

    [Required(ErrorMessage = "StudentID is required.")] 
    [ForeignKey("Student")] 
    public int PersonID { get; set; } 
    #endregion 

    #region Navigation Properties 

    public virtual Course Course { get; set; } 
    public virtual Person Student { get; set; } 
    #endregion 
} 

便利な記事もshoul:Requirements for Creating POCO Proxies

関連する問題