private Dictionary <string, int> GetLastMaxIdDict(SyncInfo syncInfo) { var bll = new DbSyncStatusBll(); var startsDict = syncInfo.ExportMaxIdDict; if (syncInfo.ServerWriteSuccess) { // 由于上次导入的数据已成功同步至服务端 // 因此,将上将导出数据的最大 Id 写入数据库 // 以作为下次导出数据的依据 var models = startsDict.Select(couple => new DbSyncStatus { DbIdentity = string.Empty, TableName = couple.Key, Position = couple.Value, LastTime = DateTime.Now }); bll.BulkInsert(models); } else { startsDict = new Dictionary <string, int>(); var list = bll.QueryAll(); foreach (var o in list) { startsDict.Add(o.TableName, o.Position); } } return(startsDict); }
private void AddClientDbStatus(DbSyncStatus status) { var bll = new DbSyncStatusBll(); for (var i = 0; i < 5; i++) { bll.Insert(status); if (status.Id > 0) { return; } } throw new Exception($"插入 DbSyncStatus 失败,Identity={status.DbIdentity}, Position=${status.Position}, LastTime={status.LastTime}"); }
public SyncInfo Export(SyncInfo syncInfo) { var dbLogMaxId = syncInfo.DbUpdateLogMaxId; var bll = new DbSyncStatusBll(); var status = bll.QuerySingle($"[DbIdentity]='{syncInfo.DbIdentity}'"); if (status == null) { status = new DbSyncStatus { DbIdentity = syncInfo.DbIdentity.ToString(), LastTime = DateTime.Now, Position = dbLogMaxId, TableName = nameof(DbUpdateLog) }; AddClientDbStatus(status); } if (syncInfo.ClientWriteSuccess) { status.Position = dbLogMaxId; status.LastTime = DateTime.Now; bll.Update(status); } else { dbLogMaxId = status.Position; } var newData = GetNewData(dbLogMaxId); syncInfo.ServerData = newData.Data; syncInfo.PathList = newData.PathList; syncInfo.ClientWriteSuccess = false; syncInfo.ServerNewDataFlag = newData.NewDataFlag; var dbLogBll = new DbUpdateLogBll(); syncInfo.DbUpdateLogMaxId = (int)dbLogBll.GetMaxId(); return(syncInfo); }