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

C# 同步框架并将多个客户端表同步到一个服务器表,c#,microsoft-sync-framework,C#,Microsoft Sync Framework,是否可以将多个客户端表同步到一个服务器表?我看到的问题是主键在多个客户端中重复。附近有工作吗 我尝试在没有主键的情况下进行同步,但同步框架似乎需要一个键才能工作 或者,我最好在服务器上创建多个表,然后创建一个视图来合并数据,而不使用主键列?避免此类重复的简单方法是使用: 天然钥匙 提供PK的服务(您需要某种数字提供者) 不推荐使用:随机生成的PK(而不是通常的+1)(guid有时有效,但非常棘手) 自然键不同于自动生成的数字:它通常是您试图存储的“对象”的固有属性。想象一下汽车牌照之类的东西 通

是否可以将多个客户端表同步到一个服务器表?我看到的问题是主键在多个客户端中重复。附近有工作吗

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


或者,我最好在服务器上创建多个表,然后创建一个视图来合并数据,而不使用主键列?

避免此类重复的简单方法是使用:

  • 天然钥匙
  • 提供PK的服务(您需要某种数字提供者)
  • 不推荐使用:随机生成的PK(而不是通常的+1)(guid有时有效,但非常棘手)
  • 自然键不同于自动生成的数字:它通常是您试图存储的“对象”的固有属性。想象一下汽车牌照之类的东西

    通过使用此属性,您可以确保当您拥有此密钥时,您拥有相同的记录

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

    目前: 您可以删除
    插入标识
    ,然后重新分配一些号码。但这将打破PK服务器/客户端关系(您的服务器将具有与客户端完全不同的PK)。久而久之,这会让你头疼不已

    另一种方法是使用复合键: 使用您的
    PK
    ,但添加一列,如
    ClientID
    ClientLocation
    ,从两者创建一个复合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
    

    我可以按照你的建议创建另一个键。同步框架会处理这种情况吗?我担心它在数据库中创建的元数据。每个同步实例的作用域名称需要不同吗;我对同步框架一无所知。我的建议基于如何在分布式数据库网络中管理密钥的概念。所以,也许你可以尝试一下概念验证。让我知道你的发现是什么。。