【发布时间】:2019-10-06 01:08:01
【问题描述】:
我在 windows 窗体应用程序中使用 2 个相关表同时插入主从记录,这些表称为例如“Orders”和“Order Details”。
- 我首先创建名为“
dataSet1”的数据集并创建行表 这两张桌子的适配器 - 然后我在设计模式下打开我的表单并从数据源窗口中删除
首先是“
Orders”表,然后我删除相关的“Order Details” 创建主从界面的表, - 所以主记录是“
Orders”记录,显示为 表单和详细记录“Order Details”显示为datadridview fields和 -
将逻辑代码保存在“
ordersBindingNavigatorSaveItem”按钮中 自动创建的bindingnavigator是这样的:this.Validate(); this.ordersBindingSource.EndEdit(); this.tableAdapterManager.UpdateAll(this.dataSet1); 然后当我插入“
Order”记录并保存到数据库之前 我创建了至少一个孩子“Order Details”记录然后我打电话 保存上面显示的代码以同时保存我得到的所有内容 像这样的错误:
INSERT 语句与 FOREIGN KEY 约束冲突 “
FK_Order_Details_Orders”。数据库发生冲突 “Northwind”,表“dbo.Orders”,列“OrderID”。该声明有 被终止了。
- 但是当我插入“订单”记录并将其保存到数据库时,我
插入“
Order Details”记录并保存一切都很好
我的问题是如何同时插入主记录和子记录?
【问题讨论】:
-
我认为问题来自于表单在主(父)记录(订单)之前插入详细信息(子)记录(订单详细信息),解决方案可以来自某种方式先插入主记录然后获取主记录的 id 并在子记录的插入语句中使用它作为外键
标签: .net sql-server winforms dataset bindingsource