0
添加FilterClause後,刪除不再工作。同步框架 - 添加FilterClause後刪除不起作用
JuneT說filter on tracking table which is Users_tracking
不過,我看不出|評論列Users_tracking;我只看到UserId。
謝謝你的幫助!
private static void ProvisionLocal(
SqlConnection sqlLocalConn, DbSyncScopeDescription scopeDesc)
{
var Users = SqlSyncDescriptionBuilder
.GetDescriptionForTable("Users", sqlLocalConn);
scopeDesc.Tables.Add(Users);
var sqlLocalProv = new SqlSyncScopeProvisioning(sqlLocalConn, scopeDesc);
sqlLocalProv.CommandTimeout = 3600;
sqlLocalProv.Tables["Users"].AddFilterColumn("IsPublished");
sqlLocalProv.Tables["Users"].FilterClause =
string.Format("[side].[IsPublished] = {0}", 1);
if (!sqlLocalProv.ScopeExists("TestScope"))
{
sqlLocalProv.Apply();
}
}
private static void ProvisionRemote(
SqlConnection sqlRemoteConn, DbSyncScopeDescription scopeDesc)
{
var sqlRemoteProv = new SqlSyncScopeProvisioning(sqlRemoteConn, scopeDesc);
sqlRemoteProv.CommandTimeout = 3600;
if (!sqlRemoteProv.ScopeExists("TestScope"))
{
// Apply the scope provisioning.
sqlRemoteProv.Apply();
}
}
public void Synchronize()
{
var sqlSourceConn = new SqlConnection("...");
var sqlDestinationConn = new SqlConnection("...");
var scopeDesc = new DbSyncScopeDescription("TestScope");
ProvisionLocal(type, sqlSourceConn, scopeDesc);
ProvisionRemote(type, sqlDestinationConn, scopeDesc);
// Prepare for synchronization
var localProvider = new SqlSyncProvider("TestScope", sqlSourceConn);
var remoteProvider = new SqlSyncProvider("TestScope", sqlDestinationConn);
remoteProvider.ApplyChangeFailed += RemoteProvider_ApplyChangeFailed;
var orch = new SyncOrchestrator();
orch.RemoteProvider = remoteProvider;
orch.LocalProvider = localProvider;
orch.Direction = SyncDirectionOrder.Upload;
SyncOperationStatistics stats = orch.Synchronize();
sqlDestinationConn.Close();
sqlSourceConn.Close();
}
我更新了代碼和屏幕截圖。謝謝! – Win
再次,你是否已經在目的地上有一個現有的範圍?或者你是否在兩個數據庫上都沒有作用域? – JuneT
我在源和目標中只有一個名爲'TestScope'的作用域。 – Win