1

저는 첫 번째 마이 그 레이션에서 일대 다 관계를 생성하는 데 두 가지 방법을 사용했으며 각각의 차이점을 알지 못합니다.코드 첫 번째 마이그레이션에서 일대 다 관계를 작성하는 두 가지 방법으로 혼란 스럽습니다. 어느 것을 선택해야합니까?

첫째 방법

public class Student 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

public class Course 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public Student Student { get; set; } 
} 

번째 방법 :

public class Student 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public ICollection<Course> Courses { get; set; } 
} 

public class Course 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public Student Student { get; set; } 
} 

그들은 모두 동일한 결과를 갖는다. 관계를 확인하십시오 : Relationship Diagram

우리가 같은 관계를 갖는다면 왜 우리는 ICollection을 학생 테이블에 사용합니까?

+0

정말 고마워요. 따라서 데이터베이스가 동일하게 유지된다는 의미입니다. 학생에게 Ilist 을 포함 시키면 안됩니다. 이 속성을 추가하면 한 학생의 모든 과정에 액세스 할 수 있습니다. 내가 맞습니까? –

답변

0

엔티티 프레임 워크의 관계에는 항상 양쪽 끝에 네비게이션 속성이 있고 규칙에 따라 자동으로 매핑되는 엔티티 프레임 워크가 있습니다.

예제에서 Student 클래스와 Course 클래스는 일대 다 관계가 있습니다. 여기에서 Id (Student 테이블)는 Student 테이블의 기본 키가되며, 외래 키를 만들기 위해 Course 클래스의 Student_Id 속성에 대한 ForeignKey 속성이됩니다. Student 클래스를 Course 클래스의 ForeignKey 특성에 전달해야합니다. 따라서 코드는 DataAnnotations 속성을 사용하여 Student 클래스와 Course 클래스간에 일대 다 관계를 만듭니다. 예를 들어

:

할 수 있습니다 간단한 수와 같은 수 (과정) 학생의 부정 속성을 사용하여 학생의 모든 course Name : 당신은 자세한 내용에 대한 One-to-Many이 링크를 악마 수

_context.Students 
     .Include(s => s.Courses)  
     .Courses.Select(c=>c.Name).ToList(); 

.

+0

좋아, 그것은 나를 많이 도왔다. ICollection 을 사용하여 데이터베이스에서 데이터를 가져올 수있는 방법을 말해 줄 수 있습니까? –

+0

예를 들면 다음과 같습니다. var student = _context.Students.ToList(); 모든 학생 데이터를 가져옵니다. –

+0

이제 ICollection 을 사용하여 데이터를로드 할 수 있습니까? –

0

첫 번째 방법에서는 한 학생을 코스 엔티티에 배정하여 같은 코스를 수강하는 학생이 많기 때문에 한 학생 만 코스에 배정됩니다.

코스는 학생 단체에 의존해서는 안됩니다. 학생들에게 정확한 과정을 배정해야합니다. 학생이 여러 과목을 택할 수있는 경우 두 번째 방법은 거의 정확합니다. 단, 다음과 같이 과정 실체에서 학생 속성을 제거 할 수 있습니다. 그러나 한 학생이 한 코스 만 수강 할 수 있다면 학생 실체를 수정하고 코스 목록 대신 단일 코스를 할당 할 수 있습니다.

public class Student 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public IList<Course> Courses { get; set; } 
} 

public class Course 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 
관련 문제