TableAdapter插入不持久数据

时间:2013-11-09 06:44:55

标签: c# sql-server-2012 tableadapter localdb

我通过Visual Studio 2013 Express版创建了一个基于服务的本地数据库。连接字符串,数据集和TableAdapter是自动添加的。

单击按钮,我试图通过调用TableAdapter.Insert来插入一些数据 因为它已经有一个dataGridView的数据源绑定到数据集,所以我立即看到数据在运行时正确插入表中,但是当我关闭应用程序时,实际的DB不包含数据。因此,数据实际上并未插入数据库中。

根据http://msdn.microsoft.com/en-us/library/ms233812%28v=vs.110%29.aspx

使用insert,你只需要调用insert,但我在表上调用Update和AcceptChanges,为了安全起见,我尝试了链接中显示的第一种方式(即创建一行并将其添加到数据集然后调用update)好吧,但似乎数据根本没有插入数据库中。

最后,插入代码,rds是DataSet,ta是TableAdapter

private void AddBtn_Click(object sender, EventArgs e)
{
     ta.Insert("foo", "bar", 2, "zing", "tada");
     ta.Fill(rds.reminders);
     rds.reminders.AcceptChanges();
     ta.Update(rds.reminders);  
}

2 个答案:

答案 0 :(得分:2)

事实证明,每当mdf数据库被覆盖时我都在使用VS编译的应用程序,因此我所做的更改被完全删除了,

可能的解决方案可能是以下之一

1)更改连接字符串以指向Debug文件夹中的数据库,每次编译和运行应用程序时都不会覆盖该文件夹

2)您可以简单地让连接字符串保持原样,然后通过分离的编译器模式对其进行测试。

由于以下stackoverflow链接我在2天之后突然总结,我能够解决这个问题。

Database changes do not persist after ObjectContext.SaveChanges() is called

答案 1 :(得分:0)

ClearBeforeFill Property
http://msdn.microsoft.com/en-us/library/bz9tthwx.aspx

  

“默认情况下,每次执行查询以填充TableAdapter时   数据表,数据被清除,只有查询的结果   加载到表中。“