同步框架并将多个客户端表同步到一个服务器表

时间:2018-08-27 07:04:27

标签: c# microsoft-sync-framework

是否可以将多个客户端表同步到一个服务器表?我看到的主键在多个客户端中重复出现的问题。有没有解决的办法?

我试图在没有主键的情况下进行同步,但是似乎同步框架需要一个键才能使其工作。

还是我最好的选择是在服务器上创建多个表,然后创建一个视图以合并没有主键列的数据?

1 个答案:

答案 0 :(得分:1)

避免重复的一种简单方法是使用:

  1. 自然键
  2. PK提供服务(您需要某种号码提供者)
  3. 不推荐:随机生成的PK(而不是通常的+1)(guid有时会起作用,但非常棘手)

自然键与自动生成的数字不同:它通常是您要存储的“事物”的固有属性。想想像汽车上的车牌。

使用此属性,可以确保当您拥有此键时,您具有相同的记录。

请记住,即使有车牌,也总是会有一些例外。


就目前而言:

您也许可以删除insert identity,然后重新分配一些数字。但这将破坏PK服务器/客户端的关系(您的服务器将具有与客户端完全不同的PK)。随着时间的流逝,这可能会让您头疼。

另一种方法是使用组合键:

使用您的PK,但添加一列,例如ClientIDClientLocation,从两者创建复合PK(不确定自动编号是否会接受)。这可能是最简单的选择。

对于后者,在此示例中,您可以看到组合键是唯一的:

//Client 1)
|---composite PK---|
|  ID  | ClientID  |
|------|-----------|
      1      cust1
      2      cust1
      3      cust1
//etc
//Client 2)
|---composite PK---|
|  ID  | ClientID  |
|------|-----------|
      1      cust2
      2      cust2
      3      cust2
//etc

//Server)
|---composite PK---|
|  ID  | ClientID  |
|------|-----------|
      1      cust1
      1      cust2
      2      cust1
      2      cust2
      3      cust1
//etc