Entity Framework: отображение многих ко многим - PullRequest
0 голосов
/ 11 июля 2019

Во время моего проекта, в котором я создаю своего рода интернет-магазин, я столкнулся с проблемой с моим бэкэндом .NET, где я сначала использую Entity Framework Code с Fluent API.

В моем интерфейсе Заказы могут быть сделаны и переданы моему внутреннему интерфейсу, где они в конечном итоге становятся объектами Заказа (код ниже). Этот заказ содержит пользователя и словарь, в котором хранятся товары и их заказанные количества. Моя текущая цель - сохранить эти заказы в моей базе данных для получения истории заказов. Я понимаю, что сам по себе EF не может отобразить словарь. Будучи студентом и занимаясь главным образом фронтэндом, я не знаю, как с этим справиться.

Я пытался преобразовать этот словарь в список ItemWrappers (содержащий и Item, и сумму) и создать 2 таблицы: Order (OrderId, UserId) и OrderItem (OrderId, ItemId, Amount). Это преобразует «многие ко многим» («Пользователи в элементы», а порядок определяется из атрибута отношения) в «один ко многим» («порядок для элемента»). Я понимаю это с точки зрения чисто базы данных. Я мог бы справиться, если бы сам написал все запросы, но, учитывая, что EF добавляет к этому некоторую абстракцию, я немного растерялся. Как вы предлагаете мне это сделать?

Код упрощен, чтобы показать только структуру класса. Идентификатор всегда генерируется при добавлении и используется в качестве первичного ключа.

 public class User {

        public int Id { get; set; }
        public string Name { get; set; }
}

 public class Item {
        public int Id { get; set; }
        public string Name { get; set; }
}


public class Order {
        public IList<OrderItemWrapper> ItemsList { get; set; }
        //Either one of these 2
        public Dictionary<Item, int> Items { get; set; }

        public User User { get; set; }
        public int Id { get; set; }
}

public class OrderItemWrapper {
        public Item Item { get; set; }//Will use ItemId as key
        public int Amount { get; set; }
}

1 Ответ

1 голос
/ 11 июля 2019

Не могли бы вы пройти через мое объяснение отношений многих ко многим здесь. Правильно ли следующее дерево SchoolContext?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...