如何以相同的形式处理两个连续的插入(Order-OrderItem)

时间:2014-12-16 12:13:17

标签: c# asp.net

我模拟向顾客出售商品的过程。卖家可以点击按钮创建新订单。订单表单由订单本身的几个字段和一个带有页脚行的空网格添加订单项。

表格顺序:

OrderId
CreationDate
CreatedBy

OrderItem的

OrderItemId
OrderItemQuantity
OrderId

如果是新订单,系统应该在Orders表中插入一个新行并检索系统创建的新Id,然后它将获取用户在New Order Form中创建的项目并将其插入OrderItem表每个都带有对OrderId的引用。

卖家点击按钮创建新订单后,表单弹出窗口,他应该可以立即向订单添加新商品。我的问题是他必须先保存订单,没有任何项目才能获得OrderId,然后他应该在网格中添加项目。

这听起来不是最好的方法,我想到了几个解决方案

1-卖家点击按钮后,我将订单插入订单表并获取ID,并以同样的方式将项目一旦创建就直接插入数据库。但问题是我不确定如何区分他是否在没有保存或保存的情况下关闭表格以了解我是否应该删除记录。

2-我想创建一个数据表并将项目临时插入该表中,当卖家点击保存时,我会将所有这些项目输入数据库。但这会产生如此多的额外代码,但我不介意这是否是最好的解决方案。

有没有人有其他建议?

1 个答案:

答案 0 :(得分:0)

我使用选项2,因为选项1可能会导致无用的SQL操作。

我创建了一个空的DataTable并将其保存到会话中。每次卖家添加商品时,我都会执行以下操作:

1-从会话中检索DataTable

2-添加包含数据的新行到Datatable

3-将DataTable保存到会话

4-将网格绑定到会话中存储的DataTable