0

我有两个表 TblOrders 和 TblOrderItems。TblO​​rders 有一个主键字段,它是一个自动编号字段。我需要在 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”中。该语句已终止。

已解决: 使用正确的解决方案更新了代码块。

4

1 回答 1

0

问题已解决...感谢 Gert 提供的帮助。主要问题中显示的答案。

于 2013-10-16T10:02:00.470 回答