TableAdapter.Update(dataset)在Ado.NET中没有保存到数据库
本文关键字:保存 数据库 NET Ado Update dataset TableAdapter | 更新日期: 2023-09-27 18:07:52
我看过关于这个主题的其他帖子。然而到目前为止,还没有解决方案。我在c#中使用Visual Studio 2013。
我有一个数据库Database1。一个名为Customers的表,它只有两条记录。我基于这个数据库创建了名为CustomersDataSet的数据集(菜单:项目,添加新数据源…)。这是我的代码。
CustomersDataSetTableAdapters.CustomersTableAdapter cta = new CustomersDataSetTableAdapters.CustomersTableAdapter();
CustomersDataSet ds = new CustomersDataSet();
// Fill our customersDataSetTable with the data from customers adapter
cta.Fill(ds.Customers);
Console.WriteLine("BEFORE");
foreach (CustomersDataSet.CustomersRow customer in ds.Customers.Rows)
{
Console.WriteLine(customer.FirstName + " " + customer.LastName);
}
Console.WriteLine("'nMaking changes now...");
// Insert a new record
CustomersDataSet.CustomersRow newCustomer = ds.Customers.NewCustomersRow();
newCustomer.FirstName = "Brian";
newCustomer.LastName = "Faley";
newCustomer.City = "Denver";
newCustomer.State = "CO";
ds.Customers.AddCustomersRow(newCustomer);
// Update a record, [0] = gets access to the first row of the customers table
ds.Customers[0].FirstName = "Robert";
// Delete a record
ds.Customers[1].Delete();
// Update the dataset ds. Commit changes to the database
cta.Update(ds);
Console.WriteLine("'nAFTER");
foreach (CustomersDataSet.CustomersRow customer in ds.Customers.Rows)
{
Console.WriteLine(customer.FirstName + " " + customer.LastName);
}
在我看到"after"之后对数据集所做的更改时,它可以工作。
然而,我可以随时运行它——永远不会将更改写入底层数据库。更新应该做到这一点,但它没有。我的代码中没有AcceptChanges()
。我已经跟进了所有这些建议——它们没有任何结果。
有人有主意吗?
我在谷歌上到处搜索,所有关于这个问题的帖子都没有解决。
当您调试应用程序时,mdf文件被复制到bin'debug文件夹中,并且您的更改被提交到那里的数据库。
每次启动项目时,debug文件夹中的mdf都会被原始数据库覆盖。
您可以通过转到解决方案中的数据库设置并仅在版本较新时将数据库设置为复制来阻止此行为。
很可能你的代码一直在工作。
希望这对你有帮助。