我正在开发一个销售产品的系统。这个系统有产品,每个产品类型都有子类。
public abstract class Product
{
public int ProductId { get; set; }
public string naam { get; set; }
public string barcode { get; set; }
}
public class Card :Product
{
[Display(Name = "Cardnumber")]
public int nummer { get; set; }
public Kaliber kaliber { get; set; }
}
此外,我想保留我销售的所有产品的历史记录以及当时正确的所有数据。
public class Transaction
{
public int transactionId { get; set; }
public Member member { get; set; }
public virtual ICollection<Product> producten { get; set; }
public double totaalprijs { get; set; }
public DateTime tijdstip { get; set; }
public string kantoorMedewerker { get; set; }
}
问题是,该实体现在在 Product to Transaction 中创建了 FK。那不是我想要的。我想为他们每个人准备一张单独的桌子;一个产品表和一个已售产品表。我已经在我的 productContext 中尝试过这个:
public DbSet<Product> producten { get; set; }
public DbSet<Product> uitgifte_producten { get; set; }
这是不可能的,因为 EF 不允许每个 type 有多个对象集。这似乎是微不足道的,但我无法弄清楚。制作两个类,一个 Product 和一个 Soldproduct,它们都有 producttypes 的子类,看起来相当难看。我试过了,但是 VS2012 抱怨它不能将 Product 转换为 SoldProduct。
在 C#、.net 4.0 和 EF 中执行此操作似乎是个好主意?