Операции:
Удалить в DataGridView выбранную строку из набора данных:
FuDataSet.FuRow row = (FuDataSet.FuRow) ((DataRowView)FuBindingSource.Current).Row;
row.Delete();
Чтобы добавить новую строку, я делаю:
FuDataSet.FuRow row = FuDataSet.Fus.NewFuRow();
row.Someting = "Some initial Content";
row.SomethingElse = "More Initial Content";
...
FuDataSet.Fus.AddFuRow(row);
Сохранение пользовательских изменений в текущей строке в наборе данных:
FuDataSet.FuRow row = (FuDataSet.FuRow) (((DataRowView) FuBindingSource.Current).Row);
row.Someting = someTextBox.text;
...
Сохранить в базе данных:
Validate();
FuBindingSource.EndEdit();
FuTableAdapter.Update(FuDataSet.Fus); <-- Exception here
Я использую стандартные DatagridView, Dataset, TableAdapter, BindingSource Scheme VS автоматически устанавливает после определения структуры базы данных. Используется только одна таблица, и используется SQL Server compact 3.5.
Теперь моя проблема в том, что я получаю исключение параллелизма (DeletedRowInaccessibleException) каждый раз, когда я делаю это (начиная с пустой базы данных):
Создание новой строки, удаление этой строки, сохранение в базе данных, новая строка, сохранение в базе данных, удаление этой строки, сохранение в базе данных <- исключение </p>
Я думаю, что существует некоторая проблема синхронизации между базой данных и набором данных.
Если я перезагружаю базу данных после каждого сохранения через FuTableAdapter.Fill (FuDataSet.Fus), проблема исчезнет. Однако я не думаю, что это может быть намерением.
Я надеюсь, что кто-то может помочь мне и обнаружить ошибку в конструкции или объяснить, что может пойти не так.
Спасибо!