0
"Tickets"및 "Toys"라는 2 개의 테이블이 있습니다. 데이터가 인 두 가지 테이블입니다.TPC를 기존 데이터와 함께 TPT로 변환하는 방법은 무엇입니까?
[Table("Toy")]
public class Toy
{
public int ToyId{ get; set; }
public string Name{ get; set; }
public string Size{ get; set; }
}
[Table("Ticket")]
public class Ticket
{
public int TicketId{ get; set; }
public int Type{ get; set; }
public int Amount{ get; set; }
public DateTime Date{ get; set; }
}
public class InheritanceMappingContext : DbContext
{
public DbSet<Toy> Toys { get; set; }
public DbSet<Ticket> Tickets { get; set; }
}
는하지만 지금은 내가 "제품"라는 이름의 테이블이 정체성이 될 것 "ID"열 폭 것이다 있도록, TPT 상속을 구현하기로 결정했다. 이제 "티켓"과 "장난감"의 두 클래스가 "Product"에서 상속되어야합니다. 하지만 데이터베이스를 업데이트하려고하면 많은 오류가 발생합니다. 이론적으로
public abstract class Product
{
public int Id{ get; set; }
public long Price{ get; set; }
}
[Table("Toys")]
public class Toys: Product
{
public string Name{ get; set; }
public string Size{ get; set; }
}
[Table("Ticket")]
public class Ticket: Product
{
public int Type{ get; set; }
public int Amount{ get; set; }
public DateTime Date{ get; set; }
}
public class InheritanceMappingContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
내가, 내가해야 알고 : 제품에서
- 상속,
- 세트 ID가 모든 데이터에 대한 "제품", "제품"에
- 설정을
- 복사에 삽입 "제품"에 ID가 삽입됩니다. 그러나 PK 삭제 및 색인 삭제 및 Nothings 업데이트시 오류가 계속 발생합니다.
수동 변환 단계가 너무 많아서 마이그레이션 할 수 없습니다. 나는 당신이 그것을 손으로 더 잘하고 그 시점에서 새로운 이주를 시작하는 것이 좋을 것이라고 생각합니다. 그건 그렇고, 당신이 묘사하는 단계는 TPH처럼 보입니다. –
Gert Arnold의 답변 외에 다른 정보. TPH를 사용하면 Ticket 및 Toy (또는 Toys)에서 Table 특성을 제거해야하며 마이그레이션 중에 Products 테이블의 Discrimitator 열을 업데이트해야합니다. – bubi