Не удается сохранить DataSet обратно в базу данных - PullRequest
1 голос
/ 12 мая 2011

Ситуация: приложение WPF, .NET4, источник данных (MS SQL Server 2008), созданный с помощью конструктора

Проблема: чтение данных работает хорошо:

adapter.Fill(ds);

DataSet заполненоданные, таблицы привязаны к DataGrids.Когда я затем редактирую любой DataGrid (например, добавляю одну строку) и нажимаю "Enter" в WPF DataGrid, новая строка добавляется успешно.

Затем я вызываю:

ds.AcceptChanges();
adapter.Update(ds);

Но без изменений не сделано в базовой базе данных MS SQL Server 2008.Это безумие, кто-нибудь знает, где проблема?

Ответы [ 4 ]

4 голосов
/ 12 мая 2011

Вы должны позвонить AcceptChanges после Update или вообще не звонить.

http://msdn.microsoft.com/en-us/library/system.data.dataset.acceptchanges.aspx

AcceptChanges помечает все строки в наборе данных как неизмененные, поэтому Update не видит изменений и не обновляет базу данных.

0 голосов
/ 15 августа 2015

Я обнаружил, что то же самое верно при использовании формы с сеткой данных (на другом компьютере под управлением операционной системы Server 2012 с VS 2013 Express для рабочего стола Windows в приложении Windows Forms).
Я добавил кнопку, событие нажатия кнопки вызывает метод обновления:

this.customersTableAdapter.Update(this.database1DataSet);
MessageBox.Show("Save was done.");  

Я добавил MessageBox только для того, чтобы увидеть, что s.th. случилось, так как я больше не доверяю этой IDE.
Изменения, сделанные в сетке данных, отражаются в форме. Нет претензий от VS или Windows. Я запускаю его снова: данные не были сохранены в базе данных.
Это просто глючная штука, и она не заслуживает всего того внимания, которое получает.
Может быть, это все по замыслу.
Ооочень долго,
Andi

0 голосов
/ 14 августа 2015

это все еще не решено, и у меня та же проблема.
В адаптере таблицы вы можете сделать tableadaptername.Update (dataset.NameofDataset).
Однако это не записывает данные в базу данных.
Именованный DataSet знает только о AcceptChanges, но не об обновлении после Dot-оператора.

Итак, это не решено в течение четырех лет ... Есть и другие подобные сообщения ...
Только не отвечайте, если это не имеет никакого значения - и AcceptChanges здесь НЕсоответствующие.
С уважением,
Анди

0 голосов
/ 12 мая 2011

Вы указали свое обновление и вставили операторы sql / хранимые процедуры в адаптер данных?

Еще одна вещь, на которую нужно обратить внимание - это возвращаемое значение из dataAdapter (int), которое представляет собой число строк, которые былиУспешно обновлено.Возвращается ли это со значением?

Можете ли вы опубликовать свой код инициализации адаптера данных?

...