C# 在Visual Studio/C中插入后,本地数据库不提交更改#

C# 在Visual Studio/C中插入后,本地数据库不提交更改#,c#,sql,database,linq,linq-to-sql,C#,Sql,Database,Linq,Linq To Sql,我对VisualStudio有这个问题。我有一个基于服务的数据库-KCSDatabase.mdf,其中有一个表-Users。我使用它通过在UserDataClasses.cs的上下文中拖放表来创建它的LINQ类。我在数据库和UserDataClasses.cs中都有一个存储过程AddNewUser 对于连接,它使用在App.config中定义的连接字符串: connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDi

我对VisualStudio有这个问题。我有一个基于服务的数据库-KCSDatabase.mdf,其中有一个表-Users。我使用它通过在UserDataClasses.cs的上下文中拖放表来创建它的LINQ类。我在数据库和UserDataClasses.cs中都有一个存储过程
AddNewUser

对于连接,它使用在
App.config
中定义的连接字符串:

connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\KCSDb.mdf;Integrated Security=True"
因此,当我提交一个包含注册和调试应用程序的用户数据的表单时,数据库不会在插入后更新更改

当我尝试在一个会话中使用唯一id添加两行时,它会通知我由于主键(id)而无法插入,并且不会在数据库中进行更改。但是,如果我在两个不同的时间执行此操作—两次启动应用程序并插入具有相同id的用户,它不会通知我,也不会在数据库中进行更改

有人告诉我,它在某处写入插入信息(在某个文件中,关闭应用程序后会被销毁),但不会插入数据库。 这是我的表单的saveButtonClick事件的代码:

UserDataClassesDataContext dc = new UserDataClassesDataContext();

dc.AddNewUser(Convert.ToInt32(tbId.Text),
              tbFirstName.Text,
              tbMiddleName.Text,
              tbLastName.Text,
              tbMail.Text,
              tbUserName.Text,
              tbPassword.Text);
dc.SubmitChanges();

MSDN

保存更改在事务中运行。如果无法持久化任何脏ObjectStateEntry对象,则SaveChanges将回滚该事务并引发异常

SubmitChanges启动事务,并在SubmitChanges执行时发生异常时回滚。但是,这不会回滚内存中的更改或由DataContext跟踪的更改;这些更改需要手动回滚。如果要放弃内存中的更改,可以从DataContext的新实例开始

您需要调用.SaveChanges()而不是.SubmitChanges()

对代码的修改:

dc.UserDataClassesDataContext dc = new UserDataClassesDataContext();

dc.AddNewUser(Convert.ToInt32(tbId.Text),
          tbFirstName.Text,
          tbMiddleName.Text,
          tbLastName.Text,
          tbMail.Text,
          tbUserName.Text,
          tbPassword.Text);
dc.SaveChanges(); // Replace dc.SubmitChanges();

我们需要更多关于“通过拖放表创建它的LINQ类”的详细信息:这可以是LINQ到SQL或实体框架模型(两者都基于使用设计器生成客户端代码):您使用哪一种?我使用LINQ到SQL。我这样做了:在我的文件夹Data中,右键单击->将新项LINQ添加到SQL类,并将其命名为UserDataClasses.dbml。然后从服务器ExLoor拖动表用户并将其放到DML文件的空白字段中,与存储过程类似的拖放。检查服务托管的Web.CONFIG的连接字符串。我不确定我的应用程序有Web.CONFIG文件-它不是Web应用程序。它不应该有,你应该有App.config。您可以查询您的连接,以便我们确定它不是连接吗?做一些简单的选择什么的。同时粘贴你的App.config。