/// <summary> /// 自定义保存从表数据逻辑 /// </summary> /// <param name="saveDataModel"></param> /// <returns></returns> public override WebResponseContent Add(SaveModel saveDataModel) { //校验从表配置 ValidateExtra(saveDataModel); if (!_webResponse.Status) { return(_webResponse); } //取出校验完成后的从表1.2的数据 TableExtra tableExtra = _webResponse.Data as TableExtra; //保存到数据库前 AddOnExecuting = (App_ReportPrice price, object obj) => { return(WebResponseContent.Instance.OK()); }; //App_ReportPrice 此处已经提交了数据库,处于事务中 AddOnExecuted = (App_ReportPrice price, object obj) => { //在此操作tableExtra从表信息 return(WebResponseContent.Instance.OK()); }; return(base.Add(saveDataModel)); }
/// <summary> /// 自定义更新从表操作 /// </summary> /// <param name="saveModel"></param> /// <returns></returns> public override WebResponseContent Update(SaveModel saveModel) { //校验从表配置 ValidateExtra(saveModel); if (!_webResponse.Status) { return(_webResponse); } //取出校验完成后的从表1.2的数据 TableExtra tableExtra = _webResponse.Data as TableExtra; //保存到数据库前 UpdateOnExecuting = (App_ReportPrice price, object obj, object obj2, List <object> list) => { return(WebResponseContent.Instance.OK()); }; //App_ReportPrice 此处已经提交了数据库,处于事务中 UpdateOnExecuted = (App_ReportPrice price, object obj, object obj2, List <object> list) => { //在此操作tableExtra从表信息 List <App_News> newsList = tableExtra.Table1List.Select(s => new App_News { Id = s.Id ?? 0, Title = s.Title, ImageUrl = s.ImageUrl }).ToList(); //id=0的默认为新增的数据 List <App_News> addList = newsList.Where(x => x.Id == 0).ToList(); //设置默认创建人信息 addList.ForEach(x => { x.SetCreateDefaultVal(); }); //获取所有编辑行 List <int> editIds = newsList.Where(x => x.Id > 0).Select(s => s.Id).ToList(); addList.ForEach(x => { x.SetModifyDefaultVal(); }); //从数据库查询编辑的行是否存在,如果数据库不存在,执行修改操作会异常 List <int> existsIds = App_NewsRepository.Instance.FindAsIQueryable(x => editIds.Contains(x.Id)).Select(s => s.Id).ToList(); //获取实际可以修改的数据 List <App_News> updateList = newsList.Where(x => existsIds.Contains(x.Id)).ToList(); //设置默认修改人信息 updateList.ForEach(x => { x.SetModifyDefaultVal(); }); //新增 repository.AddRange(addList); //修改(第二个参数指定要修改的字段,第三个参数执行保存) repository.UpdateRange(updateList, x => new { x.Title, x.ImageUrl, x.Modifier, x.ModifyDate, x.ModifyID }); //其他从表按上面同样的操作即可 //最终保存 //repository.SaveChanges(); return(WebResponseContent.Instance.OK()); }; return(base.Update(saveModel)); }
/// <summary> /// 验证提交的从表参数 /// saveModel.Extra在App_ReportPrice.js中addBefore/updateBefore新建与编辑时提交到的后台 /// </summary> /// <param name="saveModel"></param> /// <returns></returns> private WebResponseContent ValidateExtra(SaveModel saveModel) { if (saveModel == null || saveModel.Extra == null) { return(_webResponse.Error("请提交参数")); } try { TableExtra tableExtra = saveModel.Extra.ToString().DeserializeObject <TableExtra>(); if (tableExtra == null || tableExtra.Table1List == null || tableExtra.Table1List.Count == 0 || tableExtra.Table1List == null || tableExtra.Table2List.Count == 0) { return(_webResponse.Error("请提交从表1与从表2的参数")); } //校验 从表1字段:Title,CreateDate必填 _webResponse = tableExtra.Table1List.ValidationEntityList(x => new { x.Title, x.CreateDate }); if (!_webResponse.Status) { _webResponse.Message = "从表1:" + _webResponse.Message; return(_webResponse); } //校验 从表2字段:Describe, Name,PhoneNo 必填 _webResponse = tableExtra.Table2List.ValidationEntityList(x => new { x.Describe, x.Name, x.PhoneNo }); if (!_webResponse.Status) { _webResponse.Message = "从表2:" + _webResponse.Message; return(_webResponse); } //校验成功返回 return(_webResponse.OK(null, tableExtra)); } catch (Exception ex) { Console.WriteLine(ex.Message); return(_webResponse.Error("参数不正确")); } }