2013-08-13 3 views
1

는 다음 클래스 고려 :DbContext가 자동 DbSet <T> 속성을 초기화하는 방법은 무엇입니까?

class MyContext : DbContext 
{ 
    public DbSet<Order> Orders { get; set; } 
} 

하고 새 객체 인스턴스화 : 널 (null) mycontext.Orders를하지 왜

var mycontext = new MyContext(); 

를? 그것이 초기화되었을 때? 누가 그것을 초기화 했습니까? 기본 클래스 (DbConetxt)가 파생 클래스 속성에 액세스 할 수 없어서 자동 속성이 기본 객체에서 초기화되지 않았기 때문에 나는 혼란 스럽습니다.

답변

5

반사 된 코드를 보면 DbContext (기본 클래스)가 생성 될 때 기본적으로 DbContext의 모든 속성을 찾기 위해 리플렉션을 사용하는 DbSetDiscoveryService (내부 클래스)를 호출 한 다음 초기화합니다 초기화가 필요합니다.

그래서 짧게 - 생성자에서 리플렉션을 사용합니다.