私は商品を販売するシステムに取り組んでいます。このシステムには製品があり、製品タイプごとにサブクラスがあります。
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 を作成することです。それは私が欲しいものではありません。それぞれに個別のテーブルが必要です。Products テーブルと SoldProducts テーブル。私はすでに私のproductContextでこれを試しました:
public DbSet<Product> producten { get; set; }
public DbSet<Product> uitgifte_producten { get; set; }
EF では type ごとに複数のオブジェクト セットが許可されていないため、これは不可能です。これは些細なことのように思えますが、私には理解できません。1 つの Product と 1 つの Soldproduct の 2 つのクラスを作成し、両方が producttypes のサブクラスを持つことは、かなり醜いように思えます。私はそれを試しましたが、VS2012 は Product を SoldProduct に変換できないと文句を言います。
C#、.net 4.0、および EF でこれを行うには、何が良いと思われますか?