• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

c/c++ 来源:Daniel Djolev 3次浏览

我在Visual Studio中遇到了此问题。我有一个基于服务的数据库 – KCSDatabase.mdf和它的用户。我通过在我的UserDataClasses.cs的上下文中拖放表来创建它的LINQ类。我在数据库和UserDataClasses.cs中也有一个存储过程AddNewUser。本地数据库在插入Visual Studio/C后未提交更改#

对于连接它使用在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

的SaveChanges事务内运行。将调用SaveChanges回滚事务并抛出一个异常,如果任何脏ObjectStateEntry对象并不能被持续

的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(); 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)