抱歉,标题又长又乱。
我有一个客户想要同步三个数据库。 (以后可能会更多。)所有三个数据库中的所有数据都必须与所有其他数据库同步。这根本不需要是实时的,但可能会每晚运行或类似的运行。
此数据库使用标识列作为主键/外键。
问题是给定的记录可以独立地添加到两个(或更多)数据库中,但却是相同的数据。因此,例如,我可以在两个站点数据库中创建一个名为 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/