同步框架唯一约束违规

时间:2013-06-19 11:12:19

标签: c# .net microsoft-sync-framework

考虑2个表,员工和位置。

员工

EmpId Name LocationId

xxx   XYZ  yyy
xxx   ABC  zzz

位置

LocationId Location

yyy        India
xxx        USA

EmpId和LocationId是uniqueidentifier类型的主键列。 Employee表中的LocationId是外键,指的是Location表。此外,假设位置表中的位置列存在唯一约束。

步骤1:在客户端和服务器之间进行同步。数据现已更新。

步骤2:在位置表中添加一个新行,其值在服务器和客户端中均为“France”。此外,在employee表中添加引用此新行的新行。

第3步:同步。由于违反了唯一约束,它将失败。 “法国”行在客户端和服务器中都存在不同的主键,当Sync框架尝试插入新行时,唯一约束会阻止它,并且同步失败。

我需要通过将客户端locationid更新为冲突行的服务器locationid来克服此问题。我尝试编写代码以在dbapplychangefailed事件中更新它,但是,Sync框架会锁定冲突的行,我无法访问它。

非主键列的唯一约束是我的主要问题,如果我能得到该问题的解决方案,我可以在这种情况下实现它。

请指教。提前谢谢。

0 个答案:

没有答案