/// <summary> /// 更新每日行情. /// </summary> /// <param name="newData"></param> /// <returns></returns> public bool InsertOrUpdateCommodityPrice(CommodityPrice newData) { bool result = false; try { using (MyMiniTradingSystemContext context = new MyMiniTradingSystemContext()) { // 计算 Tr. newData.Tr = GetTrValue(context, newData); // 计算 Atr. newData.Atr = GetAtrValue(context, newData); // 查询数据是否已存在. var query = from data in context.CommodityPrices where data.CommodityCode == newData.CommodityCode && data.TradingStartDate == newData.TradingStartDate select data; CommodityPrice oldData = query.FirstOrDefault(); if (oldData != null) { // 更新. // 开. oldData.OpenPrice = newData.OpenPrice; // 收. oldData.ClosePrice = newData.ClosePrice; // 高. oldData.HighestPrice = newData.HighestPrice; // 低. oldData.LowestPrice = newData.LowestPrice; // 量. oldData.Volume = newData.Volume; // Tr. oldData.Tr = newData.Tr; // ATR. oldData.Atr = newData.Atr; oldData.BeforeUpdateOperation(); } else { // 插入. newData.BeforeInsertOperation(); context.CommodityPrices.Add(newData); } // 保存. context.SaveChanges(); result = true; } } catch (Exception ex) { logger.Error(ex.Message, ex); result = false; ResultMessage = ex.Message; } return(result); }