【发布时间】:2015-05-06 12:19:34
【问题描述】:
我为 POS(销售点)应用程序创建了一个同步应用程序。 一台服务器与多个终端相连。 服务器和终端数据库有 [pos_terminal] 表。它有 [POS_TERMINAL_ID] 列作为身份。 这就是我配置服务器的方式。
try
{
string strScopeName = "";
strScopeName = "TERMINAL_SCOPE_T01";
SqlConnection serverConn = new SqlConnection(strServer_Connection);
//pos_terminal
DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription(strScopeName);
DbSyncTableDescription pos_terminal_Description = SqlSyncDescriptionBuilder.GetDescriptionForTable("pos_terminal", serverConn);
scopeDesc.Tables.Add(pos_terminal_Description);
SqlSyncScopeProvisioning serverProvision = new SqlSyncScopeProvisioning(serverConn, scopeDesc);
serverProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);
serverProvision.ObjectSchema = "Sync";
serverProvision.Tables["pos_terminal"].AddFilterColumn("POS_TERMINAL_ID");
serverProvision.Tables["pos_terminal"].FilterClause = "[side].[POS_TERMINAL_ID]='T01'";
if (serverProvision.ScopeExists(strScopeName))
{
return;
}
serverProvision.Apply();
MessageBox.Show("Server provisioned with scope " + strScopeName);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
及以下,我如何配置终端数据库。
try
{
string strScopeName = "";
strScopeName = "TERMINAL_SCOPE_T01";
SqlConnection clientConn = new SqlConnection(strTerimal_Connection);
SqlConnection serverConn = new SqlConnection(strServer_Connection);
DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope(strScopeName, null, "Sync", serverConn);
SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, scopeDesc);
clientProvision.ObjectSchema = "Sync";
clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);
if (clientProvision.ScopeExists(strScopeName))
{
return;
}
clientProvision.Apply();
MessageBox.Show("Terminal provisioned with scope " + strScopeName);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
这些都是基本的过滤。
问题是,在 TERMINAL 01 中,当我将 POS_TERMINAL_ID 设置为“T01”(在过滤中)时,它运行良好,并且过滤后的数据与 [pos_terminal] 表同步。 但是在 TERMINAL 02 中,当我将 POS_TERMINAL_ID 设置为“T02”(在过滤中)时,数据与 T01 相关,但与 T02 无关。
在 TERMINAL 03 中发生同样的情况,(同步 T01,但不同步 T03)。
我已经单独测试过,只需在 2 个数据库中创建 2 个表并测试编码。编码工作正常。 在另一个表中存在对 [POS_TERMINAL_ID] 的外键引用。 我已将其删除并在 POS 数据库中进行了测试。但没有运气。
任何人有这种情况的解决方案?
谢谢
【问题讨论】:
标签: c# sync microsoft-sync-framework