【发布时间】:2009-11-26 09:28:20
【问题描述】:
有人可以指出我使用 Sync Framework 在 c# .net 中处理 PK 冲突错误的正确方向吗?
我正在尝试在 sql server 2008 和本地数据缓存数据库 (.sdf) 之间进行同步,并且希望保留在服务器和客户端中都存在冲突的行,并且不允许服务器或客户端获胜?
当我将新行插入到具有相同 PK id 的服务器和客户端时,我得到一个 pk 冲突错误。
任何建议将不胜感激。
谢谢
【问题讨论】:
-
您离可行的解决方案有多近?您是否考虑过使用 Microsoft Sync Framework。这里面有一个很好的冲突解决系统。
-
我正在使用同步框架,但是对于 PK 冲突 (ClientInsertServerInsert),没有选项可以指定将两行都接受到两个表中(据我所知)。
-
当你有一个双方的冲突时,你要么需要写日志进行和解;要么或通过强制写入更改密钥
-
我现在已经解决了这个问题,方法是使用 PK 的 GUID 而不是自动递增的 int。这保证了服务器或任何客户端插入的每一行都是唯一的。我知道有一些缺点,例如额外的存储空间和搜索所需的时间,但这是我愿意接受的(我将过滤客户端获取的数据,这将有助于提高性能)。
标签: .net sql-server sql-server-2005 sql-server-2008 synchronization