如何使用ef迁移中的现有数据将TPC转换为TPT?

问题描述 投票:0回答:1

我有2个名为“Tickets”和“Toys”的表。这些是带有数据的2个不同的表。

    [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; }
}

但是现在我决定实现TPT继承,这样我将有一个名为“Product”宽度的表和一个“Id”列,这将是标识。现在2个类,“Ticket”和“Toys”应该继承自“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; }
}

理论上我知道,我应该:

  1. 继承产品,
  2. 在“产品”中设置标识插入
  3. 将所有数据复制到“产品”
  4. 在“产品”中设置标识插入但在删除PK并删除索引和Nothings更新时仍然存在错误。
c# sql entity-framework
1个回答
0
投票

这里的代码优先实现看起来不错。尝试并重置实体框架实现。这个link有很好的指示。

© www.soinside.com 2019 - 2024. All rights reserved.