这是我们的问题:
我们有一个我们的UI绑定的当前数据集(20个表,每个表数千行)。通常,我们使用自定义PubSub实现来应用业务流程(客户端和服务器)中其他参与者的增量更改。由于我们客户的旧习惯以及PubSub的一些可靠性问题,我们的一些客户坚持要求点击我们的硬刷新按钮。
该按钮获取数据的完整副本并清除现有数据集(#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)都会被重置,因此所有扩展/折叠的信息都会丢失,选择等。
那么,有人可以推荐已经做过类似事情的第三方库吗?如果没有,有关如何继续实施的任何建议?如果我们成功了,我一定会在这里公布结果......