示例#1
0
        /// <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);
        }