Exemplo n.º 1
0
 protected virtual void OnSelectingChanges(SelectingChangesEventArgs args)
 {
     if (SelectingChanges != null)
     {
         SelectingChanges(this, args);
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Selects for a table in the server database the inserts, updates, and deletes to apply to the client database for a synchronization group.
        /// </summary>
        /// <param name="groupMetadata">A SyncGroupMetadata object that contains metadata about the synchronization group.</param>
        /// <param name="syncSession">A SyncSession object that contains synchronization session variables, such as the ID of the client that is synchronizing.</param>
        /// <returns>A SyncContext object that contains synchronization data and metadata.</returns>
        public override SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession)
        {//#DOWNLOAD a batch 1
            if (groupMetadata == null)
            {
                throw new ArgumentNullException("groupMetadata");
            }
            if (syncSession == null)
            {
                throw new ArgumentNullException("syncSession");
            }

            SyncContext syncContext = new SyncContext();
            DataSet     dataSet     = new DataSet();

            groupMetadata = InitializeMetadata(groupMetadata, dataSet, syncContext);

            SelectingChangesEventArgs selectingArgs = new SelectingChangesEventArgs(groupMetadata, syncSession, syncContext, Connection, null);

            OnSelectingChanges(selectingArgs);

            SyncSchema          schema        = new SyncSchema();
            Collection <string> tables        = new Collection <string>();
            Collection <string> missingTables = new Collection <string>();

            foreach (var tableMetadata in groupMetadata.TablesMetadata)
            {
                tables.Add(tableMetadata.TableName);
            }

            if (tables.Count > 0)
            {
                schema = GetSchemaInternal(tables, out missingTables);
            }

            if (missingTables != null)
            {
                string[] tableArray = new string[missingTables.Count];
                missingTables.CopyTo(tableArray, 0);
                SchemaException e = new SchemaException(String.Format(CultureInfo.CurrentCulture,
                                                                      Messages.MissingTables, String.Join(", ", tableArray)));
                e.SyncStage   = SyncStage.ReadingSchema;
                e.ErrorNumber = SyncErrorNumber.MissingTableSchema;
                throw e;
            }

            // FIX: Get schema from somewhere (possibly the adapter or a temporary schema)
            // Possible performance hit when in mobile

            EnumerateChanges(groupMetadata, syncSession, syncContext, schema);

            ChangesSelectedEventArgs selectedArgs = new ChangesSelectedEventArgs(groupMetadata, syncSession, syncContext, Connection, null);//sYNC tODO

            OnChangesSelected(selectedArgs);

            return(syncContext);
        }