Raj*_*Raj 23 .net c# sql-server-2008 microsoft-sync-framework
有没有人在这里使用Sync Framework并通过WCF端点进行同步?请分享代码示例或示例项目.我特意寻找离线场景,其中客户端仅在线从服务器获取更新.
Raj*_*Raj 28
我做了以下操作,以使Sync Framework使用WCF与SQL Server 2008一起工作
使用SqlSyncAdapterBuilder为参与Sync的表构建适配器
foreach (var item in anchorTables)
{
// Use adapter builder to generate T-SQL for querying change tracking data and CRUD
SqlSyncAdapterBuilder builder = new SqlSyncAdapterBuilder();
builder.Connection = new SqlConnection(this.connectionStringFactory.ConnectionString);
builder.ChangeTrackingType = ChangeTrackingType.SqlServerChangeTracking;
builder.SyncDirection = SyncDirection.Bidirectional;
builder.TableName = item.TableName;
// Get sync adapters from builder
SyncAdapter clientAdapter = builder.ToSyncAdapter();
clientAdapter.TableName = item.TableName;
this.clientSyncProvider.SyncAdapters.Add(clientAdapter);
}
Run Code Online (Sandbox Code Playgroud)添加了锚点命令
SqlCommand anchroCommand =
new SqlCommand { CommandText = "SELECT @"
+ SyncSession.SyncNewReceivedAnchor
+ " = change_tracking_current_version()" };
anchroCommand.Parameters.Add("@"
+ SyncSession.SyncNewReceivedAnchor, SqlDbType.BigInt)
.Direction = ParameterDirection.Output;
this.clientSyncProvider.SelectNewAnchorCommand = anchroCommand;
Run Code Online (Sandbox Code Playgroud)使用DbServerSyncProvider实例作为服务器同步提供程序实现WCF服务.您将生成同步适配器并设置锚命令,如服务器提供程序的上一步所示.
[ServiceContract]
public interface ISyncService
{
[OperationContract]
SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession);
[OperationContract]
SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession);
[OperationContract]
SyncSchema GetSchema(Collection<string> tableNames, SyncSession syncSession);
[OperationContract]
SyncServerInfo GetServerInfo(SyncSession syncSession);
}
Run Code Online (Sandbox Code Playgroud)创建了一个实现ServerSyncProvider的代理类来访问WCF服务
public class DbServerSyncProviderProxy : ServerSyncProvider
{
SyncServiceProxy.SyncServiceClient serviceProxy = new SyncServiceProxy.SyncServiceClient();
public override SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession)
{
return serviceProxy.ApplyChanges(groupMetadata, dataSet, syncSession);
}
}
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
12758 次 |
最近记录: |