Вот наша проблема:
У нас есть текущий набор данных, к которому привязан наш пользовательский интерфейс (20 таблиц, тысячи строк на таблицу). Обычно мы используем собственную реализацию PubSub для применения дополнительных изменений от других участников нашего бизнес-процесса (клиентов и серверов). Из-за старых привычек наших клиентов и некоторых проблем с надежностью нашего PubSub некоторые наши клиенты настаивают на нажатии нашей кнопки hard refresh .
Эта кнопка получает полную копию данных и очищает существующий набор данных (# 1) и объединяет новый набор данных (# 2), фактически делая набор данных # 1 идентичным # 2. Наш алгоритм merge довольно прост:
public static void MergeDataSets(ref DataSet original, DataSet updated)
{
if (null == updated)
{
return;
}
if(null == original)
{
original = updated.Copy();
}
else
{
// TODO: ELI: it would be nice to have an actual merge algorithm to publish changes from updated to original.
original.Clear();
original.Merge(updated, false, MissingSchemaAction.Add);
}
}
как видите, я заметил, что мы должны разработать настоящий алгоритм слияния. Но в то время, наши клиенты приняли побочные эффекты для компромисса производительности. Или так мы думали. В любом случае, основным побочным эффектом является то, что любая сетка данных (Infragistics), связанная с нашими данными, сбрасывается, поэтому вся раскрытая / свернутая информация теряется, выбирается и т. Д.
Так, кто-нибудь может порекомендовать стороннюю библиотеку, которая уже делает что-то подобное? если нет, какие-либо рекомендации относительно того, как приступить к осуществлению? Если мы добьемся успеха, я обязательно опубликую результаты здесь ...