una remota que definicion datos c# microsoft-sync-framework

c# - que - base de datos remota definicion



Marco de sincronización: ¿Puedo sincronizar solo un subconjunto de mis tablas? (2)

Existen algunos proveedores de sincronización nuevos relacionados con la base de datos en Sync Framework 2.0: tienen una serie de ventajas sobre las que estaban disponibles anteriormente (consulte Comparación de tipos de proveedores aquí ). Con esto, puede especificar que un subconjunto de tablas se sincronice creando una DbSyncScopeDescription que contenga DbSyncTableDescriptions para solo aquellas tablas que desea sincronizar.

Usted indicó anteriormente que no está interesado en el filtrado de los datos, pero probablemente valga la pena mencionar aquí que un DbSyncScopeDescription también contiene información de filtrado.

El fragmento de código normal de sincronización de datos con el marco de sincronización es este:

LocalDBSyncAgent syncAgent = new LocalDBSyncAgent(); Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize();

¿Alguien sabe una manera de sincronizar un subconjunto de mis tablas? Tenga en cuenta que no los datos dentro de cada tabla, sino que deciden qué tablas estarían involucradas en la sincronización.

Gracias Ariel


Sí, puedes absolutamente.

Cree una tabla de sincronización para cada tabla que desee sincronizar y agréguela a Configuration.SyncTables en SyncAgent.

Encontré este artículo de Bill Ryan muy instructivo. Él analiza cómo filtrar los datos dentro de cada tabla, pero hay cosas allí que hacen lo que estás buscando.

Muestra de Bill Ryan:

public class SampleSyncAgent : Microsoft.Synchronization.SyncAgent { public SampleSyncAgent() { SqlCeClientSyncProvider clientSyncProvider = new SqlCeClientSyncProvider(Properties.Settings.Default.ClientConnString, true); this.LocalProvider = clientSyncProvider; clientSyncProvider.ChangesApplied += new EventHandler<ChangesAppliedEventArgs>(clientSyncProvider_ChangesApplied); this.RemoteProvider = new SampleServerSyncProvider(); SyncTable customerSyncTable = new SyncTable("Customer"); customerSyncTable.CreationOption = TableCreationOption.DropExistingOrCreateNewTable; customerSyncTable.SyncDirection = SyncDirection.DownloadOnly;** this.Configuration.SyncTables.Add(customerSyncTable); this.Configuration.SyncParameters.Add(new SyncParameter("@CustomerName", "Sharp Bikes")); } }