2013-04-18 9 views
0

나는 (이 게시물에 대한 단순화) 다음과 같은 기존의 테이블 구조 다음은 엔티티 구성에서 내 미약 한 시도가 enter image description hereEF 4.3 유창 매핑 중급 표는 TPT

되어있다 :

public class EntityConfiguration : EntityTypeConfiguration<Entity> { 
public EntityConfiguration() { 
    ToTable("Entity"); 
    HasKey(x => x.Id); 
    Property(x => x.Id) 
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 

    HasMany(x => x.TypeOneUpdateBlacklist) 
    .WithMany() 
    .Map(x => { 
     x.ToTable("UpdateBlacklist"); 
     x.MapLeftKey("EntityId"); 
     x.MapRightKey("UpdateId"); 
    }); 

    HasMany(x => x.TypeTwoUpdateBlacklist) 
    .WithMany() 
    .Map(x => { 
     x.ToTable("UpdateBlacklist"); 
     x.MapLeftKey("EntityId"); 
     x.MapRightKey("UpdateId"); 
    }); 
} 

구성은 렌더링 이 오류 :

스키마 'dbo'및 'UpdateBlacklist'테이블이있는 EntitySet 'EntityBlacklistUpdate'가 이미 정의되었습니다. 각 EntitySet은 고유 한 스키마 및 테이블을 참조해야합니다.

구성 할 거리가 있습니까? 미리 감사드립니다

+0

이것은 불가능한 것처럼 보입니다. 내가 해결할 수있는 유일한 해결책은 TypeOneUpdateBlacklist와 TypeTwoUpdateBlacklist라는 두 개의 다른 테이블입니다. – Dan

답변

0

당신은 기본 유형 Update으로 다 대다 매핑을 만들 수있을 것입니다 : 클래스 Entity 만 탐색 모음 Updates의를 않습니다 그러나

public class EntityConfiguration : EntityTypeConfiguration<Entity> { 
    public EntityConfiguration() { 
    ToTable("Entity"); 
    HasKey(x => x.Id); 
    Property(x => x.Id) 
     .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 

    HasMany(x => x.Updates) 
     .WithMany() 
     .Map(x => { 
      x.ToTable("UpdateBlacklist"); 
      x.MapLeftKey("EntityId"); 
      x.MapRightKey("UpdateId"); 
    }); 
} 

, 그것은 필요 두 개의 파생 된 유형에 대한 두 개의 탐색 모음 대신 기본 유형. 그리고 그것은 데이터베이스 스키마가 정말 상속 모델, 즉 주어진 Update중 하나는 관련 TypeOneUpdate또는TypeTwoUpdate 행이 수를 나타내는 경우에만 가능합니다, 모두 결코 모두. 둘 다 가질 수 있으면 TPT로 매핑 할 수 없지만 일대일 관계를 만들어야합니다.