Sql Synchronization更新新插入的行,如何区分旧行和新行?

时间:2014-05-20 21:19:13

标签: sql-server synchronization sql-server-ce microsoft-sync-framework

标题可能不是很清楚,所以这里有详细的问题,我已经配置了sql server数据库并同步到一个精确的sql压缩数据库。

场景:在客户端数据库(sql compact)中存储表数据是: ID名称 0店1 1 store2

在服务器数据库(sql server)中存储表数据是: ID名称 0店1 1 store2

当我在客户端插入新行时,数据ID = 2且Name = store3 并在服务器上插入一个新行,数据ID = 2,Name = store4 并开始同步两个表中的数据变为

ID名称 0店1 1店2 2 store3

虽然我想要的方案是结果

ID名称 0店1 1店2 2店3 3 store4

我的问题是,这是否可能,如果是这样,告诉sql的方法是什么,而不是用另一行更新一行,它应该插入两个新行,任何关于我的技术或代码的建议都是最受欢迎的。

注意:ID是PK列,它是一个标识列。 用于同步的代码是

    SyncOrchestrator syncOrchestrator = new SyncOrchestrator();

        syncOrchestrator.LocalProvider = new SqlCeSyncProvider("SyncScope", ceCon);

        syncOrchestrator.RemoteProvider = new SqlSyncProvider("SyncScope", con);

        syncOrchestrator.Direction = SyncDirectionOrder.DownloadAndUpload;

        ((SqlCeSyncProvider)syncOrchestrator.LocalProvider).ApplyChangeFailed += new EventHandler<DbApplyChangeFailedEventArgs>(Program_ApplyChangeFailed);

        SyncOperationStatistics syncStats = syncOrchestrator.Synchronize();

请随时向我询问有关该问题的更多说明。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您的方案实际上会触发插入 - 插入冲突。您可以处理冲突并手动插入另一个冲突的行。

如果您在开发时提前,我建议您更改密钥以避免PK冲突。

答案 1 :(得分:0)

使用像Primary Key这样的UNIQUEIDENTIFIER将为您提供此操作。