【问题标题】:.Net Core 5 Create Order and OrderDetail.Net Core 5 创建订单和订单详情
【发布时间】:2021-08-28 18:38:21
【问题描述】:

我正在创建包含 OrderDetail 的订单。当我有一个包含许多产品的购物车时,我创建了一个订单,我希望将每个产品 ID 添加到 OrderDetail 中,包括 OrderID。

但目前,我只在添加到 OrderDetail 的第一个循环中获得 ProductID (OrderID)。当我调试时,循环仍然执行了足够多的 Product in Cart 但没有添加到 OrderDetail。

那么我在这里面临的问题是什么?

存储库

public bool CreateOrder(CartViewModel invoiceVM, string userId)
    {
        invoiceVM.Invoices.CreateAt = DateTime.Now;
        _dbContext.Invoice.Add(invoiceVM.Invoices);
        _dbContext.SaveChanges();
        decimal orderTotal = 0;
        var cartItems = GetCartItem(userId);
        foreach (var item in cartItems)
        {
            var invoiceDetail = new InvoiceDetails
            {
                ProductId = item.Products.Id,
                InvoiceId = invoiceVM.Invoices.Id,
                Price = item.Products.Price * item.Quantity,
                Quantity = item.Quantity,
            };
            orderTotal += (item.Quantity * item.Products.Price);
            _dbContext.InvoiceDetails.Add(invoiceDetail);
        }
        invoiceVM.Invoices.OrderTotal = orderTotal;
        _dbContext.SaveChanges();
        return true;
    }

【问题讨论】:

    标签: asp.net-core repository


    【解决方案1】:

    "but is not added to OrderDetail" 你的意思是在你的数据库中创建了订单,但是在你的数据库中看不到任何 OrderDetail ? 如果

    _dbContext.InvoiceDetails.Add(invoiceDetail);
    .
    .
    _dbContext.SaveChanges();
    

    成功通过,没有错误,它将数据保存在您的数据库中,我认为您的 CartViewModel 没有更新。 您可以在循环中将数据添加到 CartViewModel 或从 dbContext 运行另一个 GetInvoice()。

    【讨论】:

    • 如果我的购物车中有多个产品,它只会保存 InvoiceDetail 1 具有 InvoiceID 的单个产品。剩下的产品就会消失。
    • 当我尝试删除 invoiceVM.Invoices.CreateAt = DateTime.Now; _dbContext.Invoice.Add(invoiceVM.Invoices); _dbContext.SaveChanges(); // Remove here 时,所有产品都将保存到 InvoiceDetail 但 InvoiceID =0
    • invoiceVM.Invoices.Id 0?如果是这样,您能否分享您将 CartViewModel invoiceVM 传递给“CreateOrder”的代码?
    • @YiyiYou 抱歉耽搁了。我的电脑坏了,我因为 Covid-19 而被隔离,所以很难修复它 [paste.mod.gg/wahajafimi.csharp] 。这是我的代码
    猜你喜欢
    • 2023-04-02
    • 2017-06-10
    • 2018-08-02
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    相关资源
    最近更新 更多