1

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

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

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

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

最后插入代码,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);  
}
4

2 回答 2

2

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

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

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

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

由于两天后我突然发现了以下stackoverflow链接,我能够弄清楚这一点。

调用 ObjectContext.SaveChanges() 后,数据库更改不会持续存在

于 2013-11-10T13:31:07.140 回答
0

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

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

于 2013-11-09T06:56:35.553 回答