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;
}
试着让你的对象代表现实生活中的事物。这听起来可能有点奇怪,但一个名为OrderProduct
的对象在现实生活中不代表任何东西,也是一个糟糕的设计。你所追求的是Product
和Order
之间的关系。那么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"转换"到关系。