Order and OrderProduct

本文关键字:OrderProduct and Order | 更新日期: 2023-09-27 17:50:05

我在处理购物车中的订单时似乎遇到了问题。首先,我必须创建一个订单的实例(OrderId,CustId,…)....但是在OrderProduct中,我将如何分配OrderId(它在sql中设置有标识规范),因为它需要在我的数据库中的OrderProduct中的外键。

    public class Order
    {
        String CustomerId;
        String shipping_firstname;
        String shipping_lastname;
        String shipping_address;
        String shipping_city;
        String payment_firstname;
        String payment_lastname;
        String payment_address;
        String payment_city;
}

OrderProduct类,

    public class OrderProduct
    {
        String OrderId;
        String ProductId;
        String Quanity;
}

Order and OrderProduct

试着让你的对象代表现实生活中的事物。这听起来可能有点奇怪,但一个名为OrderProduct的对象在现实生活中不代表任何东西,也是一个糟糕的设计。你所追求的是ProductOrder之间的关系。那么Order类中的List<Product>呢?您可以在此列表中添加产品并轻松删除产品。然后,当与数据库交互时,您可以在表OrderProduct中为列表中的每个项目创建记录。

看一下这个来了解一下:

public class Product
{
 int productID;
 string name;
}
public class Order
{
 int orderID;
 Customer customer;
 List<Product> products;
 DateTime orderDate;
}

你似乎在混合范式。请注意,您正在使用关系数据库进行面向对象编程。你不应该把这两件事搞混。例如,在数据库中没有表示Table的对象。对象表示现实世界中的对象,它的属性可能存储在表的组合中。订单是由客户制作的东西,上面有产品列表、数量、总价等。您不能将这1个对象存储到数据库中的1条记录中,正如您在关系数据库中应用规范化所知道的那样。因此,一个对象在您的数据库中产生多个记录。

通常OOP程序员在他们的程序中做一个"数据层"或"层",在存储到DB之前从OOP"转换"到关系。