Beispiel #1
0
        public JsonResult Save(string json)
        {
            var list = JsonHelper.Deserialize <List <TrainMoment> >(json);

            if (list == null || !list.Any())
            {
                return(Json(ErrorModel.OperateSuccess));
            }

            // 对列车时刻的更新只存在两种情况
            //  1 某车次的列车时刻第一次添加,此时将所有车站的列车时刻表插入数据库
            //  2 对某车次的某些车站的列车时刻进行更新

            var trainMomentBll = new TrainMomentBll();
            var tableName      = typeof(TrainMoment).Name;

            var isInsert = list[0].Id == 0;

            if (isInsert)
            {
                var maxId = trainMomentBll.GetMaxId();
                trainMomentBll.BulkInsert(list);

                DataUpdateLog.BulkUpdate(tableName, (int)maxId);

                return(Json(ErrorModel.OperateSuccess));
            }

            var success = trainMomentBll.ExecuteTransation(() => {
                foreach (var item in list)
                {
                    if (!trainMomentBll.Update(item))
                    {
                        return(false);
                    }

                    DataUpdateLog.SingleUpdate(tableName, item.Id, DataUpdateType.Update);
                }

                return(true);
            });

            if (success)
            {
                return(Json(ErrorModel.OperateSuccess));
            }

            return(Json(ErrorModel.OperateFailed));
        }
        /// <summary>
        /// 为列车时刻表中的车站Id、车次线路表Id赋值,并写入数据库
        /// </summary>
        private static void WriteTrainMoments(TimeTable table)
        {
            for (var i = 0; i < table.Moments.Count; i++)
            {
                table.Moments[i].Sort           = i;
                table.Moments[i].TrainStationId = table.Stations[i].Id;
                table.Moments[i].TrainNoLineId  = table.TrainNoLineRelation.Id;
            }

            var bll = new TrainMomentBll();

            var maxId = (int)bll.GetMaxId();

            bll.BulkInsert(table.Moments);
            DataUpdateLog.BulkUpdate(nameof(TrainMoment), maxId);
        }