Выполнение массовой вставки / обновления - PullRequest
0 голосов
/ 15 января 2010

У меня есть форма ввода данных, как ...

Форма ввода данных http://img192.imageshack.us/img192/2478/inputform.jpg

Есть несколько пустых строк, и некоторые из них имеют значения. Пользователь может обновить существующие значения, а также заполнить их пустыми строками.

Мне нужно отобразить эти значения в моей таблице БД, и некоторые из них будут вставлены в базу данных как новые строки, а существующая запись будет обновлена.

Мне нужны ваши предложения, Как я могу выполнить этот сценарий с наилучшим подходом.

Спасибо

Ответы [ 2 ]

1 голос
/ 15 января 2010

Я бы хотел использовать ADO.net DataSets и DataTables в качестве резервного хранилища в памяти для вашей пользовательской сетки данных. ADO.net позволяет вам массово загружать набор данных из базы данных и отслеживать вставки, обновления и удаления этих данных в памяти. Когда вы закончите, вы можете массово обработать сохраненные транзакции обратно в базу данных.

Большим преимуществом использования ADO.net является то, что весь код отслеживания изменений уже написан для вас, а библиотека развернута на каждом компьютере с поддержкой .net.

Хотя сейчас это не в моде, вы также можете отправлять наборы данных ADO.net по сети, используя сериализацию XML для изменения, а затем отправлять их обратно для обработки в базу данных.

Google вокруг. Буквально тысячи книг, учебных пособий и постов в блогах о том, как использовать ADO.net.

1 голос
/ 15 января 2010

Для каждой строки у меня будет первичный ключ (скрытый), грязный флаг и новый флаг. В сетке вы должны установить флаг «грязный» в значение «истина» при внесении изменений. При добавлении новых строк в пользовательском интерфейсе вы должны установить новый флаг, а также сгенерировать первичный ключ (это будет проще всего, если вы используете GUID для ключа). Затем, когда вы отправляете все это обратно на сервер, вы выполняете вставки, когда установлен новый флаг, и обновляете для тех, у кого есть грязный флаг.

Когда фиксация данных будет завершена, вы просто удалите грязные и новые флаги.

Конечно, если данные совместно используются несколькими участниками и могут быть отредактированы одновременно, это может привести к еще большему, если вы не хотите, чтобы кто-то перезаписывал правки других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...