0
FilterClause를 추가 한 후 삭제가 더 이상 작동하지 않습니다.동기화 프레임 워크 - FilterClause를 추가 한 후 삭제가 작동하지 않습니다.
JUNET 내가 Users_tracking에 IsPublished 열을 볼 수 없습니다, filter on tracking table which is 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