मैंने SQL सर्वर 2008 के साथ WCF का उपयोग करके सिंक फ्रेमवर्क को काम करने के लिए निम्नलिखित किया
- एसक्यूएल सर्वर 2008 में सक्षम परिवर्तन ट्रैकिंग
- सिंक में भाग लेने वाली तालिकाओं के लिए सक्षम परिवर्तन ट्रैकिंग
- एंकर नामक मेटाडेटा तालिका जोड़ी गई
- "guid" नामक क्लाइंट Id को ट्रैक करने के लिए एक तालिका जोड़ी गई
- MSF के कोडप्लेक्स प्रोजेक्ट साइट से क्लाइंट सिंक प्रदाता के रूप में उपलब्ध SqlExpressClientSyncProvider का उपयोग किया गया
-
सिंक में भाग लेने वाली तालिकाओं के लिए एडेप्टर बनाने के लिए SqlSyncAdapterBuilder का उपयोग किया
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); }
-
एंकर कमांड जोड़े गए
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;
-
सर्वर सिंक प्रदाता के रूप में कार्य करने वाले 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); }
-
WCF सेवा तक पहुँचने के लिए ServerSyncProvider को लागू करने वाला एक प्रॉक्सी वर्ग बनाया गया
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); } }
- सिंकएजेंट का एक उदाहरण बनाया और रिमोटप्रोवाइडर को प्रॉक्सी क्लास के उदाहरण के साथ सेट किया जिसका उपयोग डब्ल्यूसीएफ सेवा तक पहुंचने के लिए किया जाता है। LocalProvider को SqlExpressClientSyncProvider के उदाहरण के साथ सेट किया गया है
- सिंकएजेंट कॉन्फ़िगरेशन में टेबल और सिंक समूहों को जोड़ा
- SyncAgent.Synchronize()