c# - 当表使用标识列并且您需要匹配任意键时,如何使用 ms 同步框架同步数据库

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

抱歉,标题又长又乱。

我有一个客户想要同步三个数据库。 (以后可能会更多。)所有三个数据库中的所有数据都必须与所有其他数据库同步。这根本不需要是实时的,但可能会每晚运行或类似的运行。

此数据库使用标识列作为主键/外键。

问题是给定的记录可以独立地添加到两个(或更多)数据库中,但却是相同的数据。因此,例如,我可以在两个站点数据库中创建一个名为 John Smith of 123 Main Street 的客户。在这种情况下,我希望 FirstName LastName 和地址的前 8 个字符(或者可能是电话号码)形成用于合并记录的“匹配键”,而不是每次都添加新的记录。换句话说,在所有同步完成后,我希望所有 3 个数据库都只有 John SMith 在 123 Main Street 的一条记录。

顺便说一下,我当时考虑的方法是在云中托管一个“主”数据库。所有三个数据库都会对这个主数据库进行双向同步。

我的主要问题是如何让它发挥作用?如何为数据库中的表定义“匹配键”。是否像在匹配键上创建唯一约束一样简单?有没有办法在不更改数据库模式的情况下做到这一点? (我愿意考虑这一点,但我的数据库是第 3 方,可能会发生变化。)

赛斯

最佳答案

如果您可以添加一个额外的列,请根据您在上面指定的“匹配键”创建一个新列。然后配置同步框架以将该列用作 PK 并忽略表中的实际 PK。

方法应该类似于这篇文章:

Part 3 – Synchronizing tables where Client and Server Primary Keys are different

关于c# - 当表使用标识列并且您需要匹配任意键时,如何使用 ms 同步框架同步数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7184372/

相关文章:

c# - Winforms - 可视化删除按钮点击事件

c# - 如果您知道访问模式不利,ConcurrentBag 仍然是支持对象池的正确选择吗?

.net - 当嵌入对象无法显示时如何显示一些文本?

ios - 乱序调用的 GCD 函数

memory - 为什么VkAccessFlagBits同时包含读位和写位?

android - SQLiteOpenHelper 同步

C# XML X文档

c# - 为什么我的 Html.DropDownList 会生成一个充满 "System.Web.Mvc.SelectListItem"字符串的列表?

c# - 如何使用 AutoFixture 在保留类型自定义的同时使用自定义属性进行构建?

.net - .NET 中的文档管理系统