/// <summary> /// Загрузка /// </summary> /// <param name="filepath"></param> public override void SyncIn(string filepath = null) { Init(); var primarySyncDataSet = LoadDumpFile(SyncSettings.DataArchiver, filepath); //десериализованный датасет if (primarySyncDataSet == null) { throw new NullReferenceException("Не удалось получить данные для синхронизации..."); } var contextDataset = FillSyncDataSet(mSyncDataSet, true); var syncTables = primarySyncDataSet.Tables.Cast <DataTable>(). Where(source => source.Columns.Count > 0).ToDictionary(source => source.TableName); //типы колонок могут отличаться в целевой и исходной например Guid -> String //тут происходит корректирока типов для таблиц дессериализованного датасета и отсев пустых таблиц var normalizedSyncData = contextDataset.Tables.Cast <DataTable>() .Where(model => syncTables.ContainsKey(model.TableName)) .Select(model => FixTableDataTypes(model, syncTables[model.TableName], filepath)); try { //тут десериализованный данные записываются в БД SyncSettings.DataSaveMethod.SaveDataOnTarget(SyncContext.GetConnectionString(), normalizedSyncData.ToArray()); } catch (Exception ex) { SyncContext.Logger.Error(ex); Out(ex.Message); //todo : SyncErrors } }