테이블 당 구체적인 유형 (TPC) 매핑을 사용하는 테이블 계층 구조가 있습니다. (I 확실하지 [키, 칼럼] 속성은 작동합니다 것 필요하지만 https://stackoverflow.com/a/19792915/959779에 따라 있음)EF6에서 복합 키를 사용한 테이블 당 구체적인 유형 (TPC) 매핑
클래스 구조 :
public abstract class BaseEntity
{
[Key, Column(Order = 0)]
public int Id { get; set; }
}
public class Page: BaseEntity {
string Data { get; set; }
}
public class PageBackup: Page {
[Key, Column(Order = 1)]
public int PageId { get; set; }
public virtual Page Page { get; set; }
}
Page
및 PageBackup
기관의 Id
테이블에 추가 한 후 (교 차 있습니다 일부 항목) EF는 고유 한 기본 키를 가지고 있어야합니다 EntitySet 'EUICDataContext.Pages'의 다음 큐션에게
"모든 객체를 throw합니다. 을하지만,을 'Entities.PageBackup'유형의 인스턴스와 'Entities.Page'유형의 인스턴스는 모두 'EntitySet = Pages; Id = 6'과 동일한 기본 키 값을 갖습니다. 아래의 "
엔티티 매핑 코드 :
class PageMapping : EntityTypeConfiguration<Page>
{
public PageMapping()
{
Map(m =>{ m.ToTable("Page"); });
HasKey(t => t.Id });
}
}
class PageBackupMapping : EntityTypeConfiguration<PageBackup>
{
public PageBackupMapping()
{
Map(m =>{
m.MapInheritedProperties();
m.ToTable("PageBackup");
});
HasKey(t => new { t.Id, t.PageId });
}
}
문제는 EF에 PageMapping
다음 서명 테이블을 생성 복합 키 Update-Database
씨앗 스크립트를 가지고 있지만입니다 :
CREATE TABLE [dbo].[PageBackup](
[Id] [int] IDENTITY(1,1) NOT NULL,
[PageId] [int] NOT NULL,
[Data] [nvarchar](max) NULL,
CONSTRAINT [PK_dbo.PageBackup] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
는 EF 허용인가 복합 키가있는 테이블을 만들려면 (매핑이있는 많은 예제가 있지만 마이그레이션에 대해 찾지 못했습니다)
TPC 매핑 대신 이러한 구성을 설명하는 방법은 무엇입니까?
다른 해결책 제안이 도움이 될 것입니다.