TableAdapter.Update(数据集)未保存到Ado.NET

时间:2015-08-14 10:39:05

标签: c# save dataset tableadapter

我已经看过关于这个主题的其他帖子。然而到目前为止还没有解决方案。我在C#中使用Visual Studio 2013 我有一个数据库“Database1.mdf”,其中有一个名为Customers的表,它只有两个记录。我根据这个数据库创建了名为CustomersDataSet的DataSet(Menu:Project,Add New Data Source ...) 这是我的代码。

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()。我已经对所有这些建议采取了后续行动 - 它们不会在任何地方发挥作用 有人有想法吗?
我google了很多,这个问题的所有帖子都没有解决。

1 个答案:

答案 0 :(得分:1)

调试应用程序时,mdf文件将复制到bin \ debug文件夹,并且您的更改将提交到数据库。

每次启动项目时,调试文件夹中的mdf都会被原始数据库覆盖。

您可以通过转到解决方案中的数据库设置来停止此行为,并将数据库设置为仅在您的版本较新时进行复制。

您的代码一直在运作。

希望这会有所帮助。