Я использую DataTables в VB.NET 2.0 и пишу код для обработки нарушений параллелизма, которые, как я ожидаю, произойдут в многопользовательской среде. Я понимаю, как отлавливать нарушения параллелизма, но не понимаю, как их устранить при использовании команд INSERT, UPDATE и DELETE, генерируемых DbCommandBuilder.
Мне кажется, что нарушения параллелизма происходят в пяти различных ситуациях:
Когда ...
- Обновление строки, которая была одновременно обновлена в базе данных
- Обновление строки, которая была одновременно удалена из базы данных
- Удаление строки, которая была одновременно обновлена в базе данных
- Удаление строки, которая была одновременно удалена из базы данных
- Вставка строки, первичный ключ которой был одновременно вставлен в базу данных
Я знаю, как разрешить ситуацию 1; Я нашел несколько примеров того, как использовать метод DataTable.Merge для синхронизации обновленных строк. Однако Merge, похоже, не работает для других 4 ситуаций.
В качестве примера предположим, что я пытаюсь обновить строку, которая была одновременно удалена из базы данных (ситуация 2), и мои бизнес-правила говорят мне восстановить строку в базе данных с обновленными значениями столбцов. Я не могу понять, как изменить свойства DataRow, чтобы метод Adapter.Update вставлял строку в базу данных по мере необходимости; Слияние не делает этого.
Учитывая легкость, с которой Merge обрабатывает ситуацию 1, я уверен, что должны быть и простые решения для других нарушений параллелизма, и я только что их пропустил. Кто-нибудь может дать мне толчок в правильном направлении?
-TC