我有两个表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以便整个事务完成,如果有任何失败,那么就不会插入任何订单。
更新: 我现在使用insert和submit命令更新了我的代码块。代码似乎工作正常,除了所有插入子表OrderItems的LinkedOrderID值为0而不是ORDER表中新插入记录的OrderID。
更新2: 我现在在OrderItems.LinkedOrderID和Order.OrderID之间添加了一个FK关系,但现在当我尝试插入时出现错误... INSERT语句与FOREIGN KEY约束冲突。 “FK_TblOrderItems_TblOrders”。冲突发生在数据库“MMD”,表“dbo.TblOrders”,列'OrderID'中。声明已经终止。
已解决: 使用正确的解决方案更新了代码块。
答案 0 :(得分:0)
问题解决了......感谢Get for help。答案显示在主要问题中。