/// <summary> /// 批量更新 /// </summary> /// <param name="baseList"></param> public void Commit(List <QH_CapitalAccountTableInfo> baseList) { try { bool isSuccess = false; QH_CapitalAccountTableDal dal = new QH_CapitalAccountTableDal(); Database database = DatabaseFactory.CreateDatabase(); using (DbConnection connection = database.CreateConnection()) { connection.Open(); DbTransaction transaction = connection.BeginTransaction(); try { foreach (var data in baseList) { dal.Update(data, database, transaction); } transaction.Commit(); isSuccess = true; } catch (Exception ex) { transaction.Rollback(); LogHelper.WriteError(ex.Message, ex); } } //提交后清除增量表数据 if (isSuccess) { QH_CapitalAccountTable_DeltaDal deltaDal = new QH_CapitalAccountTable_DeltaDal(); deltaDal.Truncate(); } /*DataManager.ExecuteInTransaction((database, transaction) => * { * foreach (var data in baseList) * { * dal.Update(data, database, transaction); * } * * //提交后清除增量表数据 * CleanDeltaTable(database, transaction); * });*/ } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } }
/// <summary> /// 清空变化量 /// </summary> /// <param name="database"></param> /// <param name="transaction"></param> private void CleanDeltaTable(Database database, DbTransaction transaction) { QH_CapitalAccountTable_DeltaDal deltaInfoDal = new QH_CapitalAccountTable_DeltaDal(); deltaInfoDal.Delete(database, transaction); }
/// <summary> /// 同步数据库 /// </summary> public void SyncChangeToBase() { QH_CapitalAccountTable_DeltaDal deltaInfoDal = new QH_CapitalAccountTable_DeltaDal(); var deltaList = deltaInfoDal.GetAllSum(); if (deltaList == null) { return; } if (deltaList.Count == 0) { return; } try { bool isSuccess = false; QH_CapitalAccountTableDal dal = new QH_CapitalAccountTableDal(); Database database = DatabaseFactory.CreateDatabase(); LogHelper.WriteDebug("期货内存资金表数据库故障恢复开始==" + deltaList.Count); using (DbConnection connection = database.CreateConnection()) { connection.Open(); DbTransaction transaction = connection.BeginTransaction(); try { foreach (var deltaInfo in deltaList) { var data = new QH_CapitalAccountTableInfo(); data.AvailableCapital = deltaInfo.AvailableCapitalDelta; data.CapitalAccountLogoId = deltaInfo.CapitalAccountLogoId; data.CloseFloatProfitLossTotal = deltaInfo.CloseFloatProfitLossTotalDelta; data.CloseMarketProfitLossTotal = deltaInfo.CloseMarketProfitLossTotalDelta; data.FreezeCapitalTotal = deltaInfo.FreezeCapitalTotalDelta; data.MarginTotal = deltaInfo.MarginTotalDelta; data.TodayOutInCapital = deltaInfo.TodayOutInCapitalDelta; dal.AddUpdate(data, database, transaction); } transaction.Commit(); isSuccess = true; } catch (Exception ex) { transaction.Rollback(); LogHelper.WriteError(ex.Message, ex); } } LogHelper.WriteDebug("期货内存资金表数据库故障恢复完成=="); //同步后清除增量表数据 if (isSuccess) { QH_CapitalAccountTable_DeltaDal deltaDal = new QH_CapitalAccountTable_DeltaDal(); deltaDal.Truncate(); } /*DataManager.ExecuteInTransaction((database, transaction) => * { * foreach (var deltaInfo in deltaList) * { * var data = new QH_CapitalAccountTableInfo(); * data.AvailableCapital = deltaInfo.AvailableCapitalDelta; * data.CloseFloatProfitLossTotal = * deltaInfo.CloseFloatProfitLossTotalDelta; * data.CloseMarketProfitLossTotal = * deltaInfo.CloseMarketProfitLossTotalDelta; * data.FreezeCapitalTotal = deltaInfo.FreezeCapitalTotalDelta; * data.MarginTotal = deltaInfo.MarginTotalDelta; * data.TodayOutInCapital = deltaInfo.TodayOutInCapitalDelta; * * dal.AddUpdate(data, database, transaction); * } * * //同步后清除增量表数据 * CleanDeltaTable(database, transaction); * deltaList = null; * });*/ } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } }
/// <summary> /// 带事务更新 /// </summary> /// <param name="delta"></param> /// <param name="db"></param> /// <param name="transaction"></param> public void PersistChangeWithTransaction(QH_CapitalAccountTable_DeltaInfo delta, Database db, DbTransaction transaction) { QH_CapitalAccountTable_DeltaDal deltaInfoDal = new QH_CapitalAccountTable_DeltaDal(); deltaInfoDal.Add(delta, db, transaction);; }
/// <summary> /// 持久化变化量 /// </summary> /// <param name="delta"></param> public void PersistChange(QH_CapitalAccountTable_DeltaInfo delta) { QH_CapitalAccountTable_DeltaDal deltaInfoDal = new QH_CapitalAccountTable_DeltaDal(); deltaInfoDal.Add(delta); }