Каков наилучший подход к синхронизации DataSet с данными в базе данных? Вот параметры:
- Мы не можем просто перезагрузить данные, потому что они привязаны к элементу управления пользовательского интерфейса, который пользователь может настроить (это древовидная сетка, которую они могут развернуть / свернуть)
- Мы не можем использовать флаг изменения (например, UpdatesTimeStamp) в базе данных, потому что изменения не всегда проходят через приложение (например, администратор БД может обновить поле с помощью оператора SQL)
- Мы не можем использовать триггер обновления в базе данных, потому что это многопользовательская система
- Мы используем ADO.NET DataSets
- Несколько полей могут изменить данную строку
Я посмотрел на возможность слияния DataSet, но, похоже, это не поддерживает понятие столбца «ID». Я рассмотрел возможности DiffGram, но проблема здесь заключается в том, что они, по-видимому, генерируются изменениями в одном и том же наборе данных, а не изменениями, которые произошли в каком-то внешнем источнике данных.
Я какое-то время работал с этим решением, но я знаю, что сработал бы (с большой неэффективностью) построение отдельного DataSet и затем итерация всех строк, применяя изменения, поле за полем, к DataSet на который связан.
У кого-нибудь был подобный сценарий? Что вы сделали, чтобы решить проблему? Даже если вы не сталкивались с подобной проблемой, любая рекомендация по ее решению приветствуется.
Спасибо