C# Winforms,一个表单中的多个表未更新到数据库

C# Winforms,一个表单中的多个表未更新到数据库,c#,.net,winforms,ado.net,multiple-tables,C#,.net,Winforms,Ado.net,Multiple Tables,我已经启动了一个winforms项目,正在使用csharp。现在的背景是一个电子商务商店,我需要一个表格,用于从供应商处重新订购产品。因此,在表格的一边,我加载产品,在表格的另一边,我加载供应商和一些其他细节 至此,我已成功加载数据并发送订单。但是,我试图将订单的详细信息保存到另一个表中(我将其命名为supplierOrders) 我尝试了以下语法: datasetTableAdapters.SupplierOrdersTableAdapter ta; ta = new datasetTable

我已经启动了一个winforms项目,正在使用csharp。现在的背景是一个电子商务商店,我需要一个表格,用于从供应商处重新订购产品。因此,在表格的一边,我加载产品,在表格的另一边,我加载供应商和一些其他细节

至此,我已成功加载数据并发送订单。但是,我试图将订单的详细信息保存到另一个表中(我将其命名为
supplierOrders

我尝试了以下语法:

datasetTableAdapters.SupplierOrdersTableAdapter ta;
ta = new datasetTableAdapters.SupplierOrdersTableAdapter();

using (ta)
{
    dataset.supplierOrders.AddSupplierOrdersRow(prodId, suppId, quantityReq, note, DateTime.Now);
}
注意:
dataset
指我使用
adddatasource
添加到项目中的数据集

这里我打算做
ta.Update()
,但是没有这样的方法或类似的
submitChanges()


使用此代码不会将任何数据插入表中。你能找出我代码中的错误吗?谢谢你自己,你的代码只在
数据集中插入一行。
数据集
是一个断开连接的,与数据存储无关的存储库。无论您对它做了什么更改,它都不会保存到数据库中,直到您将其传递给数据适配器

通常,数据源有一个专用的数据适配器。例如,如果您的数据库是Sql Server,则适配器将是
SqlDataAdapter
。对于ODBC,有
OdbcDataAdapter
。Oracle、OleDb等也是如此。。。这些类实现了基本的
IDbDataAdapter
接口,该接口具有
Update
方法以及
InsertCommand
UpdateCommand
DeleteCommand
属性。
Update
方法将
DataSet
实例作为参数。在内部,适配器类将调用相应的命令来更新
DataSet
中的每个
DataRow
对象,具体取决于它们的
RowState
属性

正确设置的适配器可以将完整的
数据集
推送到
数据库
,如下所示:

adapter.Update(dataset);
在您的场景中(您在评论中提到您正在使用类型化数据适配器),您需要做的是:

using (var adapter = new datasetTableAdapters.tablenameTableAdapter())
{
    adapter.Update(dataset);
}

您可以了解有关数据适配器的更多信息。

它没有出现在UI中,或者它确实没有插入到
数据集中
?不,它没有插入到数据库中。如果我没有在某处提供足够的数据,请告诉我:)数据集已经有一个dataadapter,我想这是由visual studio自动完成的。请问如何使用适配器?因为当我选择我想要的表(
datasetTableAdapters.tablenameTableAdapter
)时,只会出现两种方法:
equals
reference equals
@user2151973我认为您使用的是数据集设计器生成的类型化数据适配器?在任何情况下,它们都像普通适配器一样工作,只是它们都是默认设置的。只需实例化一个并调用其
Update
方法。请参阅我编辑的答案。我收到以下错误,但是
是无法在此上下文中使用的类型
。我还生成了一个ADO.NET实体模型,命名为
DatabaseContext
,并创建了一个
SupplierOrder
的对象。有趣的是,我可以参考
供应商订单
,但不能参考
数据库上下文
@user2151973请编辑您的原始问题并显示您的错误代码。至于实体框架,如果您在这方面有问题,您应该发布另一个问题。