private void DeleteData(DateTime date) { using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 30, 0))) { InitialStatusAndProgressBar(11); StatementStream stream = new StatementStream(); UpdateStatusAndProgressBar("(1/11)正在删除平仓明细数据...", 1); List <ClosedTradeDetail> ClosedTradeDetails = stream.GetClosedTradeDetails(); ClosedTradeDetails.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.ActualDate >= date); File.Delete(_Session.ClosedTradeDetailFilePath); stream.Append(ClosedTradeDetails); UpdateStatusAndProgressBar("(2/11)正在删除品种统计数据...", 1); List <CommoditySummarization> CommoditySummarizations = stream.GetCommoditySummarizations(); CommoditySummarizations.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date); File.Delete(_Session.CommoditySummarizationFilePath); stream.Append(CommoditySummarizations); UpdateStatusAndProgressBar("(3/11)正在删除结算单数据...", 1); List <FundStatus> FundStatus = stream.GetFundStatus(); FundStatus.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date); File.Delete(_Session.FundStatusFilePath); stream.Append(FundStatus); UpdateStatusAndProgressBar("(4/11)正在删除持仓明细数据...", 1); List <PositionDetail> PositionDetails = stream.GetPositionDetails(); PositionDetails.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.DateForPosition >= date); File.Delete(_Session.PositionDetailFilePath); stream.Append(PositionDetails); UpdateStatusAndProgressBar("(5/11)正在删除持仓数据...", 1); List <Position> Positions = stream.GetPositions(); Positions.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date); File.Delete(_Session.PositionFilePath); stream.Append(Positions); UpdateStatusAndProgressBar("(6/11)正在删除出入金数据...", 1); List <Remittance> Remittances = stream.GetRemittances(); Remittances.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date); File.Delete(_Session.RemittanceFilePath); stream.Append(Remittances); UpdateStatusAndProgressBar("(7/11)正在删除股票图数据...", 1); List <Stock> Stocks = stream.GetStocks(); Stocks.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date); File.Delete(_Session.StockFilePath); stream.Append(Stocks); UpdateStatusAndProgressBar("(8/11)正在删除交易明细数据...", 1); List <TradeDetail> TradeDetails = stream.GetTradeDetails(); TradeDetails.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.ActualTime >= date); File.Delete(_Session.TradeDetailFilePath); stream.Append(TradeDetails); UpdateStatusAndProgressBar("(9/11)正在删除交易数据...", 1); List <Trade> Trades = stream.GetTrades(); Trades.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date); File.Delete(_Session.TradeFilePath); stream.Append(Trades); UpdateStatusAndProgressBar("(10/11)正在校准权益...", 1); using (StatementContext statement = new StatementContext(typeof(Stock), typeof(FundStatus), typeof(Account))) { var stocks = statement.Stocks.Where(m => m.AccountId == _Session.SelectedAccountId).OrderBy(m => m.Date); var fundStatus = statement.FundStatus.Where(m => m.AccountId == _Session.SelectedAccountId).OrderBy(m => m.Date); if (stocks.Count() > 0 && fundStatus.Count() > 0) { var lastStock = stocks.ToList().LastOrDefault(); var lastFundStatus = fundStatus.ToList().LastOrDefault(); var diff = lastFundStatus.CustomerRights - lastStock.Close; if (diff != 0) { foreach (var stc in stocks) { stc.Open += diff; stc.High += diff; stc.Low += diff; stc.Close += diff; } statement.Cover(statement.Stocks.ToList()); } } UpdateStatusAndProgressBar("(11/11)正在保存数据...", 1); OverStatusAndProgressBar(); this.AddLog(string.Concat("账号:<", statement.Accounts.FirstOrDefault(m => m.Id == _Session.SelectedAccountId).AccountNumber, ">", date.ToString("yyyy年MM月dd日"), "以及之后的数据以全部删除,重启软件生效。")); } ts.Complete(); } }