[英]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
。
然后,您可以為BreakfastMenuItems
, LunchMenuItems
等創建屬性,並基於MenuType
屬性在MenuItems
上進行MenuType
。 或者,創建一個函數Menu.GetMenuItemsByType(MenuType menuType)
,該函數將返回所需的結果。
是的,這是由於菜單類中的集合而發生的。 從您的模型EF推斷,一個菜單項可以屬於菜單中的BreakFast,Lunch,Snacks,Dinner列表。 任何菜單項都可以全部/部分/全部不存在。 因此,這是它生成的最直接的設計。
但是,首先要進行編碼的地方是首先進行編碼。 一旦弄清楚了模型,就可以隨時進行小的更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.