实体框架-如何为该实体建模?

时间:2019-09-26 09:58:56

标签: c# entity-framework

我有两个表,用于存储产品及其生产率的数据。可能有多种类型的生产力,但假设我有3个(A,B和C)。 如何将它们存储在一张表中,仅按类型区分它们,将其加载到实体中时,将按类型分组?

ProductId   ProductivityTypeId  AddedDT Projected   Actual
1               1          2019-09-20   1000.000    900.000
1               2          2019-09-25   0.800       0.750
2               1          2019-09-20   1000.000    900.000



 public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual IEnumerable<Productivity> ProductivityA { get; set; }
    public virtual IEnumerable<Productivity> ProductivityB { get; set; }
    public virtual IEnumerable<Productivity> ProductivityC { get; set; }
}

    public class Productivity
{
    public int ProductId { get; set; }
    public byte ProductivityTypeId { get; set; }
    public DateTimeOffset AddedDT { get; set; }
    public decimal Projected { get; set; }
    public decimal Actual { get; set; }

    public virtual Product Product { get; set; }
    public virtual ProductivityType ProductivityType { get; set; }
}

        protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Productivity>()
            .HasKey(p => new { p.ProductId, p.ProductivityTypeId, p.AddedDT });
        modelBuilder.Entity<Product>()
            .HasMany(p => p.ProductivityA).WithOne(p => p.Product);

    }

所以我确实尝试过类似的事情:

modelBuilder.Entity<Product>()
            .HasMany(p => p.ProductivityA).WithOne(p => p.Product).HasForeignKey(p => p.TypeId == 1);

1 个答案:

答案 0 :(得分:0)

对于此问题,您可以选择以下两种方法中的任何一种: