いくつかのクラスからデータベースを生成するために Entity Framework 4.3 を使用しています。無料または割引のコレクションを持つItem
クラスがあります。Deals
私のクラスは次のようにモデル化されています:
public class Item
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
//Other properties
public virtual ICollection<Deal> Deals { get; set; }
}
public abstract class Deal
{
//These properties are shared between various Deals
public int Id { get; set; }
public bool Monday { get; set; }
public bool Tuesday { get; set; }
public bool Wednesday { get; set; }
public bool Thursday { get; set; }
public bool Friday { get; set; }
public bool Saturday { get; set; }
public bool Sunday { get; set; }
public TimeSpan TimeFrom { get; set; }
public TimeSpan TimeTo { get; set; }
public int AgesFrom { get; set; }
public int AgesTo { get; set; }
public string Comments { get; set; }
public virtual ICollection<Vote> Votes { get; set; }
}
public class DiscountedDeal : Deal
{
public double PriceAfterDiscount { get; set; }
}
public class FreeDeal : Deal
{
//No properties needed here
}
それから私の中でonModelCreating
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<FreeDeal>().ToTable("FreeDeals");
modelBuilder.Entity<DiscountedDeal>().ToTable("DiscountedDeals");
}
Deal
私はもともと、それが無料かどうかを示すブールフィールドを持つ単一のクラスを持っていました。私が今持っている方法は、もう少し標準化されているように見えますが、当然、物事はより複雑になります.
フロントエンドでは、このデータを送信および取得するために ajax 呼び出しを使用していますが、個別の取引をどのように扱うかはわかりません。を取得し、Item
3 がある場合Deals
、たとえば 2Free
と 1Discounted
をどのように処理できますか? アイテム クラスに2 つCollections
( 用に 1 つと 用Free
に 1つ) ある必要がありますか? フラグ付きのDiscounted
1 つのクラスに戻す必要がありますか?Deal