2013-11-28 2 views
0

Я новичок в отношениях Entity Framework и имею проблемы с 3 таблицами, хотя я разработал для 2 таблиц. Вот моя проблема3 отношение таблицы с Entity Framework

У меня есть следующие модели:

public partial class Student 
{ 
    public Student() 
    { 
     this.StudentCourses = new HashSet<StudentCourse>(); 
     this.Leaves = new HashSet<Leave>(); 
    } 

    public int id { get; set; } 
    public string first_name { get; set; } 
    public string middle_name { get; set; } 
    public string last_name { get; set; } 
    public string password { get; set; } 
    public string email { get; set; } 
    public string gender { get; set; } 
    public string facebook { get; set; } 
    public string contact_number { get; set; } 
    public string address { get; set; } 
    public string admin { get; set; } 
    public string college { get; set; } 
    public string status { get; set; } 
    public System.DateTime createdat { get; set; } 
    public System.DateTime updatedat { get; set; } 
    public string descripton { get; set; } 

    public virtual ICollection<StudentCourse> StudentCourses { get; set; } 
    public virtual ICollection<Leave> Leaves { get; set; } 
} 

public partial class StudentCourse 
{ 
    public StudentCourse() 
    { 
     this.Fees1 = new HashSet<Fee>(); 
     this.Issues = new HashSet<Issue>(); 
    } 

    public int id { get; set; } 
    public int student_id { get; set; } 
    public int course_id { get; set; } 
    public int fees { get; set; } 
    public System.DateTime join_date { get; set; } 
    public string admin { get; set; } 
    public System.DateTime createdat { get; set; } 
    public System.DateTime updatedat { get; set; } 

    public virtual Student Student { get; set; } 
    public virtual Course Course { get; set; } 
    public virtual ICollection<Fee> Fees1 { get; set; } 
    public virtual ICollection<Issue> Issues { get; set; } 
} 

public partial class Course 
{ 
    public Course() 
    { 
     this.StudentCourses = new HashSet<StudentCourse>(); 
     this.CourseContents = new HashSet<CourseContent>(); 
    } 

    public int id { get; set; } 
    public string course_name { get; set; } 
    public int course_fees { get; set; } 
    public int duration { get; set; } 
    public string admin { get; set; } 
    public string status { get; set; } 
    public System.DateTime createdat { get; set; } 
    public System.DateTime updatedat { get; set; } 

    public virtual ICollection<StudentCourse> StudentCourses { get; set; } 
    public virtual ICollection<CourseContent> CourseContents { get; set; } 
} 

Теперь для чтения данных, я использовал:

List<Student> studentlist = entities.Students.Include("StudentCourses").Where(s => s.status.Equals("active")).ToList<Student>(); 

Q.1. Я хочу добавить курс, потому что я хочу показать название курса
Q.2. Если я хочу читать данные в поле зрения, как я могу прочитать название курса?

Например:

foreach(var student in studentlist){ 
    student.first_name 
    student.StudentCourses.fees  (it is not working!) 
    student.StudentCourses.Courses.course_name (it is not working!) 
} 

ответ

1

Вы только включая StudentCourses. Попробуйте это вместо:

List<Student> studentlist = entities.Students.Include("StudentCourses") 
              .Include("StudentCourses.Fees") 
              .Include("StudentCourses.Course") 
            .Where(s => s.status.Equals("active")).ToList(); 
+0

Спасибо Reda за ответ, я попробовал, но как я должен прочитать данные на мой взгляд. Я попытался это: @ student.StudentCourses.Course.course_name Но он говорит: 'System.Collections.Generic.HashSet ' не содержит определение для 'Курса' – Ashutosh

+0

Это потому, что 'student.StudentCourses' в коллекции. Вы должны перебирать его (например, «foreach»), чтобы прочитать свойство «Course» для каждого «StudentCourse». –

+0

Правильно, спасибо за ответ – Ashutosh

Смежные вопросы