我有两个表,用于存储产品及其生产率的数据。可能有多种类型的生产力,但假设我有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);
答案 0 :(得分:0)
对于此问题,您可以选择以下两种方法中的任何一种: