支持主从表BLL单独提交明细表优化UpdateDetailKey方法|C/S框架网
支持主从表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
/// <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
主从表BLL继承bllBaseBusiness基类,提交数据是调用BLL.Update(DataSet)方法,DataSet参数预设是最少两个DataTable,优化UpdateDetailKey方法后,您只需要添加明细表DataTable即可。
注意:单独提交明细表时,要确保明细表不能有Added状态的记录,因为DAL层的_UpdateSummaryKeyMode参数预设值=UpdateKeyMode.OnlyDocumentNo(自动生成流水号),此参数是针对主表的主建自动生成流水号码,若违法此规则,保存数据时会抛出异常,提示:外键值不能为空。

参考文档:
1.主从表的主表模型重点参数配置|UpdateKeyMode|ORM Model
2.手动和自动生成业务单据号码UpdateKeyMode详解(1)
3.更新主表的主键模式UpdateKeyMode枚举详解(2)
参考文档:
更新明细表的外键-优化方法UpdateDetailKey|C/S框架网
BLL层_DataBinder对象以及_DataBinder.Rows[0].EndEdit方法详解
使用bllBaseDataDict类提交业务单据(主从表)的明细表实例|C/S框架网
bllBaseDataDict.CreateDataBinder方法详解及性能优化
数据字典BLL.CreateDataBinder方法实现新增记录给主键赋值
Winform开发框架测试程序之测试环境配置|C/S框架网
CSFrameworkV6 - 基础资料窗体 - ValidatingData / CheckNoExists方法使用
CSFrameworkV6 - 基础资料窗体 - 扩展Update方法保存多个表
CSFrameworkV6 - 基础资料窗体 - ShowSummary方法使用
新手指南-最快速最简单的修改及保存数据方法
用户数据操作报告(frmOperateReport)窗体使用方法
NET开发框架,基于ADO.NET数据持久化快速开发框架平台-C/S框架网原创产品
Winform查询数据对话窗体与选择资料窗体实现|C/S框架网
C# Winform增删查改快速开发框架|C/S框架网
Winform+DevExpress框架之独立图片存储解决方案|C/S框架网
开发技巧-Winform窗体自动生成下一个业务流程的单据|C/S框架网
更新明细表的外键-优化方法UpdateDetailKey|C/S框架网
BLL层_DataBinder对象以及_DataBinder.Rows[0].EndEdit方法详解
使用bllBaseDataDict类提交业务单据(主从表)的明细表实例|C/S框架网
bllBaseDataDict.CreateDataBinder方法详解及性能优化
数据字典BLL.CreateDataBinder方法实现新增记录给主键赋值
Winform开发框架测试程序之测试环境配置|C/S框架网
CSFrameworkV6 - 基础资料窗体 - ValidatingData / CheckNoExists方法使用
CSFrameworkV6 - 基础资料窗体 - 扩展Update方法保存多个表
CSFrameworkV6 - 基础资料窗体 - ShowSummary方法使用
新手指南-最快速最简单的修改及保存数据方法
用户数据操作报告(frmOperateReport)窗体使用方法
NET开发框架,基于ADO.NET数据持久化快速开发框架平台-C/S框架网原创产品
Winform查询数据对话窗体与选择资料窗体实现|C/S框架网
C# Winform增删查改快速开发框架|C/S框架网
Winform+DevExpress框架之独立图片存储解决方案|C/S框架网
开发技巧-Winform窗体自动生成下一个业务流程的单据|C/S框架网
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
