0

Я пытаюсь создать быстрый демонстрационный магазин, и я сбой с отношением optional many to one or zero.необязательный много один или нулевой вопрос в Entity Framework

Соответствующие классы:

  1. Item

    public class Item 
    { 
        public int ID { get; set; } 
        public string Name { get; set; } 
        public int SubCategoryID { get; set; } 
        public virtual SubCategory Category { get; set; } 
        public double Price { get; set; } 
    } 
    
  2. Заказать

    public class Order 
    { 
        public int ID { get; set; } 
        public DateTime DateOfOrder { get; set; } 
        public virtual ICollection<Item> Items { get; set; } 
        public int CustomerID { get; set; } 
        public virtual Customer Customer { get; set; } 
    } 
    

Однако я получаю смущен, потому что просмотр модели показывает:

enter image description here

но сама база данных показывает (для элементов):

enter image description here

Который указывает мне, что каждый элемент может принадлежать только к одному заказу.

Должен ли я создать отдельный класс, от многих до многих заказов/предметов?

Кажется, я помню, как EF делал это автоматически, но я не касался его несколько лет, и я просто не могу вспомнить, что я делал.

+0

Я думал, что это будет очень прямолинейно, но я попытался копировать различные примеры отсюда, и мне просто не кажется, что мне очень повезло ... – wil

ответ

0

мне пришлось добавить:

public virtual ICollection<order> Orders { get; set; } 

к пункту ... Я никогда не буду называть это так, но похоже, что требуется для EF, чтобы построить эти отношения.

Уверен, что это было проще, поэтому, оставив этот вопрос открытым, чтобы кто-то мог дать лучший ответ!

+0

, если вы не хотите собственности «Заказы», вы также можете использовать [fluent api] (https://msdn.microsoft.com/en-us/data/jj591620.aspx#ManyToMany) для настройки отношения: 'modelBuilder.Entity () .HasMany (t => t .Items) .WithMany() ' – jjj

0

Если вы добавите коллекцию Orders в объект Item, EF создаст для вас неявно junction table на вашей БД. В этом page вы можете найти больше информации о том, как настроить отношения многих и многих.

Таблица соединений обычно отображается, когда вам нужно добавить дополнительный столбец (который исключает обе клавиши соединяемых таблиц). В этом случае вам необходимо создать два отношения «один ко многим» между сущностью, которые представляют таблицу соединений, и Order и Item соответственно. Некоторые люди рекомендуют всегда сопоставлять таблицу соединений, так как у вас есть все таблицы, представленные как сущности, и вы можете писать запросы, начиная с таблицы соединений. Вы можете найти интересную информацию об этой теме в этом link. Но, по моему опыту, в большинстве случаев вы можете отлично работать без каркаса явно таблицы переходов.

Смежные вопросы