我有两个表 TblOrders 和 TblOrderItems。TblOrders 有一个主键字段,它是一个自动编号字段。我需要在 TblOrders 中插入一条记录,然后使用该 Order 的 OrderID 将几条记录插入到 TblOrderItems 中。
所以 TblOrders 具有以下字段 OrderID、Customer、DelAddress、OrderDate 而 TblOrderItems 具有以下字段 ItemID(PK 自动编号)、LinkedOrderID(该项目所属的 TblOrders 中的 OrderID)、ItemName、ItemQty、ItemPrice
我有以下代码...
Dim db as New OrdersDataContext
Dim newOrder as New Order With {.Customer = "CustomerA", _
.DelAddress = "Delivery Address", _
.OrderDate = Now()}
db.Orders.InsertOnSubmit(newOrder)
'Removed as I now have a FK relationship
'Dim ID as Integer = newOrder.OrderID
If lstBox_Items.Count > 0 Then
For i = 0 to lstBox_Items.Count - 1
Dim newOrdersItem as New OrderItem With {.LinkedOrderID = newOrder.OrderID, _
.ItemName = lstBox_Items.Items.Item(i).Text, _
.ItemPrice = lstBox_Items.Items.Item(i).Value,_
.ItemQty = lstBox_Items.Items.Item(i).Attributes("Qty")}
db.OrderItems.InsertOnSubmit(newOrderItem)
Next
End If
db.SubmitChanges
这就是我苦苦挣扎的地方......我需要将我的 db.InsertOnSubmit() 和 db.SubmitChanges 放在哪里,以便完成整个事务,如果任何事情失败,则不会插入任何订单。
更新: 我现在已经用我的插入和提交命令更新了我的代码块。代码似乎工作正常,除了所有插入子表 OrderItems 的 LinkedOrderID 值为 0 而不是 ORDER 表中新插入的记录中的 OrderID。
更新 2: 我现在在 OrderItems.LinkedOrderID 和 Order.OrderID 之间添加了 FK 关系,但是现在当我尝试插入时出现错误... INSERT 语句与 FOREIGN KEY 约束冲突。“FK_TblOrderItems_TblOrders”。冲突发生在数据库“MMD”、表“dbo.TblOrders”、列“OrderID”中。该语句已终止。
已解决: 使用正确的解决方案更新了代码块。