2011-04-21 2 views
1

이 간단한 클래스 계층 구조가 있습니다.Entity Framework 4.1 : TPH 사용 및 기존 데이터베이스 열에 대한 매핑 속성

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

public class B : A 
{ 
public string Name { get; set; } 
} 

public class C : A 
{ 
public string Name { get; set; } 
} 

TPH를 사용하면 upp가 다음과 같은 식으로 끝납니다.

표 A, 필드 Id, 이름, 이름 1, 판별 자.

클래스 B 및 C 이름 속성을 같은 필드 (예 : 이름)에 매핑하려면이 매핑을 사용합니다.

Property(x => x.Id) 
    .HasColumnName("Id"); 

Map<B>(m => 
{ 
    m.Properties(p => new 
    { 
     Name = p.Name, 
    }); 
}); 

Map<C>(m => 
{ 
    m.Properties(p => new 
    { 
     Name = p.Name, 
    }); 
}); 

내 하위 유형 (B 및 C) 속성 이름에 대해 동일한 열에 매핑하려면 어떻게해야합니까? Properties 컬렉션과 함께 사용할 HasColumnName이 있습니까?

답변

2

THP는 속성이 기본 클래스에 있지 않으면 개체간에 속성을 공유 할 수 없습니다. TPH를 사용하면 속성은 모든 구현간에 공유되거나 특수 구현 중 하나에 속합니다.

기본 클래스에 Name 속성을 추가하면 문제가 해결됩니다.

+0

내 문제는 다른 속성을 가진 하위 클래스가 더 관련되어 있기 때문에 문제가 될 수 있습니다 ...하지만 어쨌든 내 요구 사항을 충족시키기 위해 TPT 방식을 최선의 방법으로 사용해야한다는 것을 알고 있습니다. – Per

관련 문제