Squeak.ru - шаблоны программирования

Сохранение сложных данных с использованием структуры сущностей

Привет всем, я хочу сохранить сложные данные, используя Entity Framework и C#. У меня есть 2 класса Product и Order, определенные следующим образом

Класс продукта

public class Product 
    {
        [Key]
        public int Id { get; set; }
        public string SKU_Code { get; set; }
        public string Product_Name { get; set; }
        public string Quantity { get; set; }
        public string Price { get; set; }
        public string Image { get; set; }
        public DateTime Created_Date { get; set; }
        public DateTime Modified_Date { get; set; }
    }

Класс заказа

public class Order
    {
        [Key]
        public long ID { get; set; }
        public string Order_Id { get; set; }
        public string Payment_Type { get; set; }
        public string Customer_Name { get; set; }
        public string Shipping_Address { get; set; }
        public DateTime Order_Date { get; set; }
        public DateTime Modified_Date { get; set; }
        public bool Flag { get; set; }
        public List<Product> ProductDetails { get; set; }
    }

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

public Order Add(Order odrerDetails)
{
    using (var context = new EcommerceDBContext())
    {
        var MyOrder_Id = Helper.Random(7); //Generate random orderID from my class
        foreach (var detail in odrerDetails.ProductDetails)
        {
            odrerDetails.Order_Id = MyOrder_Id;                  
            odrerDetails.Quantity = Convert.ToInt32(detail.Quantity);
            odrerDetails.Amount = Convert.ToDouble(detail.Price);

           //Other Details
            context.objOrderListing.Add(odrerDetails);
        }                
        context.SaveChanges();
        return odrerDetails;
    }
}

Это дает мне идеальные данные, но когда дело доходит до context.SaveChanges();, он возвращает мне ошибку.

Произошла ошибка при сохранении сущностей, которые не предоставляют свойства внешнего ключа для своих связей. Свойство EntityEntries вернет значение null, поскольку один объект не может быть идентифицирован как источник исключения. Обработку исключений при сохранении можно упростить, предоставив свойства внешнего ключа в ваших типах сущностей.


  • Что такое Add_Product? 20.04.2016
  • Опечатка, это только Product 20.04.2016
  • Сложные данные, хе-хе :) 20.04.2016
  • У вас нет атрибута внешнего ключа в свойстве ProductDetails в сущности Orders. 20.04.2016
  • @SabyasachiMishra Я думаю, вы неправильно поняли весь метод добавления. Я думаю, идея в том, что у вас есть список продуктов, и вы хотите сохранить заказ в БД с несколькими продуктами в заказе? В соответствии с вашим кодом вы добавляете несколько заказов. 20.04.2016
  • @ChirdeepTomar: Да, вы хотите сохранить заказ в БД с несколькими продуктами в заказе. 20.04.2016
  • @ChirdeepTomar: На самом деле, я хочу сохранить несколько заказов с несколькими продуктами с одинаковым идентификатором OrderId в таблице заказов. Нет отражения в таблице продуктов. 20.04.2016

Ответы:


1

Мне кажется, что ваша модель домена неверна. Порядок должен использоваться только для группировки, это типичный сценарий электронной коммерции.

Когда вы получаете квитанцию ​​о своих покупках, вы получаете одну квитанцию ​​с каждым товаром и ценой, указанной рядом с ним. Это рассматривается как один порядок нескольких вещей, а не несколько порядков нескольких вещей.

Читая ваш последний комментарий, вы не можете иметь несколько заказов с одним и тем же идентификатором заказа. Постарайтесь сначала понять предметную область, прежде чем пытаться решить ее с помощью кода. Кроме того, у вас нет понятия Клиента с Заказом.

public class Product 
{
    [Key]
    public int Id { get; set; }
    public string SKU_Code { get; set; }
    public string Product_Name { get; set; }        
    public string Price { get; set; }
    public string Image { get; set; }
    public DateTime Created_Date { get; set; }
    public DateTime Modified_Date { get; set; }
}

public class Order
{
    [Key]
    public long ID { get; set; }
    public string Order_Id { get; set; }
    public string Payment_Type { get; set; }
    public string Customer_Name { get; set; }
    public string Shipping_Address { get; set; }
    public DateTime Order_Date { get; set; }
    public DateTime Modified_Date { get; set; }
    public bool Flag { get; set; }
    public List<OrderLineItem> Items { get; set; }
}

public class OrderLineItem
{
    [Key]
    public long ID { get; set; }
    public long Order_Id { get; set; }
    public long Product_Id {get; set;}
    public int Quantity {get; set;}
}
20.04.2016
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...