支持主从表BLL单独提交明细表优化UpdateDetailKey方法|C/S框架网
作者:C/S框架网  发布日期:2019-01-25 22:58:56
  支持主从表BLL单独提交明细表优化UpdateDetailKey方法|C/S框架网

有些特殊情况下,我们只需要修改和提交明细表的数据,C/S框架预设提交主从表的(只修改明细表的情况下,主表的一条记录同时提交),基于性能优化与提升用户体验,针对UpdateDetailKey方法进行优化。

C# Code:

/// <summary>
/// 更新明细表的外键
/// </summary>
/// <param name="detail">明细表</param>
/// <param name="foreignFieldName">外键字段名</param>
/// <param name="foreignKeyValue">外键值</param>
protected void UpdateDetailKey(DataTable detail, string foreignFieldName, string foreignKeyValue)
{
   if (detail == null) return;
   
   if (String.IsNullOrEmpty(foreignFieldName))
   throw new Exception("明细表没指定外键, 请检查表模型定义!");
   
   foreach (DataRow row in detail.Rows)
   {
      //仅新增记录才需要更新外键,注意状态的使用
      if (row.RowState == DataRowState.Added)
      {
         if (String.IsNullOrEmpty(foreignKeyValue))
         throw new Exception("外键值为空!");
         else
         row[foreignFieldName] = foreignKeyValue;
      }
   }
}

//来源:C/S框架网(www.csframework.com) QQ:23404761


以上代码适合C/S开发框架所有版本,亲爱的用户们请知悉。

主从表BLL继承bllBaseBusiness基类,提交数据是调用BLL.Update(DataSet)方法,DataSet参数预设是最少两个DataTable,优化UpdateDetailKey方法后,您只需要添加明细表DataTable即可。

注意:单独提交明细表时,要确保明细表不能有Added状态的记录,因为DAL层的_UpdateSummaryKeyMode参数预设值=UpdateKeyMode.OnlyDocumentNo(自动生成流水号),此参数是针对主表的主建自动生成流水号码,若违法此规则,保存数据时会抛出异常,提示:外键值不能为空。

支持主从表BLL单独提交明细表优化UpdateDetailKey方法|C/S框架网

参考文档:

1.主从表的主表模型重点参数配置|UpdateKeyMode|ORM Model


2.手动和自动生成业务单据号码UpdateKeyMode详解(1)


3.更新主表的主键模式UpdateKeyMode枚举详解(2)



上一篇 下一篇