2012-05-31 5 views
0

나는 Microsoft 사이트에서 contoso 대학 자습서를 읽었으며 Entity Framework에서 어떤 작업을하고 있는지에 대해 의문을 가지고 있습니다. 여기에 우리가 간다 ...Entity doubts - Contoso University Tutorial

튜토리얼의 시작 부분에서, 우리는 내 데이터베이스의 테이블로 바뀔 3 개의 클래스를 만들었다.

언제 개체가 개체를 채우기 위해 클래스를 인스턴스화하는지 알고 싶습니다.

음 코드 우선 접근 방식을 사용합니다.

예 :

클래스가 사용하는 메신저 :

public class Course 
{ 
    public int CourseID { get; set; } 
    public string Title { get; set; } 
    public int Credits { get; set; } 
    public virtual ICollection<Enrollment> Enrollments { get; set; } 
} 

public class Enrollment 
{ 
    public int EnrollmentID { get; set; } 
    public int CourseID { get; set; } 
    public int StudentID { get; set; } 
    public decimal? Grade { get; set; } 
    public virtual Course Course { get; set; } 
    public virtual Student Student { get; set; } 
} 

public class Student 
{ 
    public int StudentID { get; set; } 
    public string LastName { get; set; } 
    public string FirstMidName { get; set; } 
    public DateTime EnrollmentDate { get; set; } 
    public virtual ICollection<Enrollment> Enrollments { get; set; } 
} 

자습서를 수행 한 후 지금 내 모든 Students을 나열 할 수 및 그들의는 재학생 목록에서 Course (들)뿐만 아니라 속성을 respectives.

엔티티에서 언제 내 Student 클래스를 인스턴스화하고 각각 Enrollment (s) 목록으로 채웠습니까?

등록 학생이 어떤 학생과 연결되어 있는지 어떻게 알 수 있습니까? 새로운 생성자()가 호출되는 것을 보지 못했습니다.

이것은 간단 할 수도 있지만 여기에는 다소 분실되어 있습니다.

감사합니다.

+0

클래스에 다음 형식의 속성이있는 경우 SomeOtherClassID EF는이 키를 외래 키로 만듭니다. 그래서 Enrollments 클래스에서 CourseID와 StudentID는 학생과 코스 테이블에 대한 외래 키입니다. ICollection은 일대 다 (One to Many) 관계를 묘사하는 데 사용됩니다. – keshav

답변

1

미리 인스턴스를 만들지 않아도됩니다. 그리고 가상 속성을 나타내는 테이블에는 아무 것도 없을 것입니다.

이러한 가상 속성은 런타임에 EF에서 탐색 정보를 저장하는 데 사용되며 컬렉션은 null이거나 0 개 이상의 요소를 포함 할 수 있습니다. 마술은 없으며, 필요할 때마다 EF "새로운"컬렉션을 디자인 한 것입니다.

명시 적으로 설명하려면 POCO에서도 생성자를 만들고 컬렉션을 새 해시 테이블과 동일하게 설정할 수 있습니다.