0

私は次のモデルクラスを持っています

public class MenuItem
{
    public int MenuItemId { get; set; }
    public int MenuId { get; set; }
    public Menu Menu { get; set; }
    public string Name { get; set; }
    public int Price { get; set; }
    public MenuType MenuType { get; set; }
}

public class Menu 
{
    public int MenuId { get; set; }
    public DateTime Date { get; set; }
    public ICollection<MenuItem> BreakFast { get; set; }
    public ICollection<MenuItem> Lunch { get; set; }
    public ICollection<MenuItem> Snacks { get; set; }
    public ICollection<MenuItem> Dinner { get; set; }
}

今私の理解は、EF Code Firstの規則に従って、テーブルを生成する必要があるということです

メニュー項目

MenuItemIdを主キーとして、MenuIdをForeginキーとして使用しますが、何かのために、EFはMenuId1、2、3、4のようなMenuIdに対して重複した外部キ​​ー(正確には余分な4)を生成続けます。

MenuItemsを持っているICollectionからですか?

なぜそれが問題になるのか分かりません。

4

2 に答える 2

1

現在のセットアップでは、MenuItemテーブルに対して 4 つの異なるリレーションが作成されます。Menuのコレクションが 1 つになるようにモデルを変更してみてはどうでしょうかICollection<MenuItem> MenuItems。これには、すべてMenuItemの のすべてのが含まれますMenuType

次にBreakfastMenuItems、 、 などのプロパティを作成し、プロパティに基づいてLunchMenuItemsフィルタリングできます。または、必要な結果を返す関数を作成します。MenuItemsMenuTypeMenu.GetMenuItemsByType(MenuType menuType)

于 2013-02-20T13:16:33.853 に答える
0

はい、メニュークラスのコレクションが原因で発生しています。モデルから EF は、1 つのメニュー項目がメニューの BreakFast、Lunch、Snacks、Dinner リストに属することができると推測します。どのメニュー項目も、すべて/一部/どれにも含めることができません。したがって、これは生成される最も単純なデザインです。

ただし、コードファーストのポイントは..コーディングファーストです。モデルを理解したら、いつでも小さな変更を加えることができます。

于 2013-02-20T14:42:28.430 に答える