먼저 코드에서 EF6의 엔티티에 대한 히스토리 테이블을 구현하려고합니다.엔티티 프레임 워크 클래스 당 클래스 상속
상속을 사용하여이를 수행 할 방법이있을 것이라고 생각했습니다. 히스토리 테이블. 실제 테이블 엔티티의 파생 된 유형으로, 모든 특성의 직선 사본 만 포함합니다. 키 편집과 함께.
Booking
에 대한 내 코드의 첫 번째 테이블 엔티티 구성입니다.
public class BookingEntityConfiguration
: EntityTypeConfiguration<Booking>
{
public BookingEntityConfiguration()
{
Property(b => b.BookingId).HasColumnOrder(0);
HasKey(b => new { b.BookingId });
HasOptional(b => b.BookingType)
.WithMany()
.HasForeignKey(c => c.BookingTypeId);
}
}
BookingHistory
에 대한 내 코드의 첫번째 테이블 엔티티 구성입니다.
public class BookingHistoryTypeEntityConfiguration
: EntityTypeConfiguration<BookingHistory>
{
public BookingHistoryTypeEntityConfiguration()
{
Property(b => b.BookingId).HasColumnOrder(0);
Property(b => b.BookingVersion).HasColumnOrder(0);
HasKey(b => new { b.BookingId, b.BookingVersion });
}
}
경우
public class BookingHistory : Booking { }
테이블 개체에 이러한 참조가 포함 데이터베이스에 연결된 상황에서 발생하지 도착 결코 내 BookingHistory
테이블 : 달성 할 수있는 간단한 방법이 있나요
public DbSet<Booking> Bookings { get; set; }
public DbSet<BookingHistory> BookingHistories { get; set; }
을 내가 원하는거야? 파생 된 엔티티 (히스토리 테이블)는 기본 클래스 엔티티와 동일한 열 필드를 포함하지만 키가 변경된 테이블을 생성합니다.
나는 위의 코드를 매우 순진하다고 생각하지만, 도움이되는 비슷한 블로그 게시물을 찾을 수없는 것 같습니다. ToTable
으로
public class BookingsContext : DbContext
{
public DbSet<Booking> Bookings { get; set; }
public DbSet<BookingHistory> BookingHistories { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<BookingBase>()
.HasKey(p => p.BookingId)
.Property(p => p.BookingId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<Booking>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Booking");
});
modelBuilder.Entity<BookingHistory>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("BookingHistory");
});
}
}
당신이 두 개체가 서로 다른 테이블에 매핑되도록 지정 :
LOL ... 감사합니다. 나는이 모든 게시물을 읽었지만, 그들 중 누구도 내가 필요로하는 것을 실제로 돕지는 않는다. 물론 가능하지 않을 수도있다. 그러나 머리카락을 잡아 당기는 낭비보다 전문가의 말을 항상 듣는 것이 좋습니다. – tigerswithguitars