C# 同步框架并将多个客户端表同步到一个服务器表
是否可以将多个客户端表同步到一个服务器表?我看到的问题是主键在多个客户端中重复。附近有工作吗 我尝试在没有主键的情况下进行同步,但同步框架似乎需要一个键才能工作C# 同步框架并将多个客户端表同步到一个服务器表,c#,microsoft-sync-framework,C#,Microsoft Sync Framework,是否可以将多个客户端表同步到一个服务器表?我看到的问题是主键在多个客户端中重复。附近有工作吗 我尝试在没有主键的情况下进行同步,但同步框架似乎需要一个键才能工作 或者,我最好在服务器上创建多个表,然后创建一个视图来合并数据,而不使用主键列?避免此类重复的简单方法是使用: 天然钥匙 提供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
我可以按照你的建议创建另一个键。同步框架会处理这种情况吗?我担心它在数据库中创建的元数据。每个同步实例的作用域名称需要不同吗;我对同步框架一无所知。我的建议基于如何在分布式数据库网络中管理密钥的概念。所以,也许你可以尝试一下概念验证。让我知道你的发现是什么。。