簡體   English   中英

如何防止EntityFramework生成多個外鍵關系?

[英]How to Prevent EntityFramework from generating Multiple Foreign key relationships?

我有以下模型課程

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不斷為MenuId(例如MenuId1,2,3,4)生成重復的外鍵(確切地說是4)。

是因為我擁有ICollection的MenuItems嗎?

我不明白為什么這應該是一個問題。

您當前的設置將為MenuItem表創建四個不同的關系。 如何更改模型,以使Menu具有ICollection<MenuItem> MenuItems一個集合。 這將包含所有MenuType的所有MenuItem

然后,您可以為BreakfastMenuItemsLunchMenuItems等創建屬性,並基於MenuType屬性在MenuItems上進行MenuType 或者,創建一個函數Menu.GetMenuItemsByType(MenuType menuType) ,該函數將返回所需的結果。

是的,這是由於菜單類中的集合而發生的。 從您的模型EF推斷,一個菜單項可以屬於菜單中的BreakFast,Lunch,Snacks,Dinner列表。 任何菜單項都可以全部/部分/全部不存在。 因此,這是它生成的最直接的設計。

但是,首先要進行編碼的地方是首先進行編碼。 一旦弄清楚了模型,就可以隨時進行小的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM