2014-10-14 3 views
0

우리는 Base라는 기본 클래스가 있고 Derived1 및 Derived2라는 상속 된 클래스는 거의 없습니다. 클래스를 별도의 테이블에 배치하기 위해 우리는 속성이나 FluentAPI를 사용할 수 있지만이 경우에는 새로운 클래스를 정의 할 때 항상이 글을 작성하지만 새로운 상속 클래스는 빈번하다.EF 자동 매핑 테이블 당 매핑 전략

결국베이스의 후속 작업은 LolContext의 Bases를 거쳐야합니다.

그래서 EF가 해당 테이블에서 Base로부터 상속받은 모든 클래스를 자동으로 매핑 할 수 있습니까?

public class OneContext : DbContext 
{ 
    public DbSet<Base> Bases { get; set; } 

    public OneContext() 
     : base("OneDatabase") 
    { 

    } 
} 

public class Base 
{ 
    [Key] 
    public int Id { get; set; } 

    public int prop1 { get; set; } 
} 

public class Derived1 : Base 
{ 
    public int prop { get; set; } 
} 

public class Derived2 : Base 
{ 
    public int prop { get; set; } 
} 

# 갱신 1

내 질문을 명확히합니다.

모든 새로운 후계자에 대해 [Table ("")] 속성을 지정하지 않고 tabels (또는 일종의 이름 또는 ID)라는 이름의 모든 'Base'상속 된 클래스를 넣을 수있는 방법이 있습니까? new DbSet <> OneContext의 새로운 후계자마다?

답변

1

TPH를 통해 자동으로 TPT를 사용하도록 EF를 구성 할 방법이 없습니다. 그러나 TPT를 구현하는 유일한 요구 사항은 파생 된 엔터티 클래스의 테이블 이름을 명시 적으로 설정하는 것입니다 (클래스 정의에서 TableAttribute을 사용하는 것처럼 간단 할 수 있음). 파생 된 엔티티 클래스에 대해 DbSet<T> 속성을 만드는 것은 선택 사항입니다.

+0

질문이 업데이트되었습니다. 그래서 ... – QuestionAndAnswer

+0

답은 동일합니다 - TPT 상속 된 테이블의 이름을 명시 적으로 지정하는 것을 피할 수 없습니다 (이것은 TPT와 TPT의 유일한 구성 차이입니다). 각 TPT 엔티티에 대해'DbSet' 속성을 생성 할 필요가 없습니다. – Moho