C/S开发框架教程:使用基础资料(数据字典)的DAL层更新主从表(或多表)数据
C/S开发框架教程:使用基础资料(数据字典)的DAL层更新主从表(或多表)数据
CSFramework C/S开发框架作为标准三层开发框架,为用户提供大量的例子参考,快速入门,实战开发。 界面层【测试按钮】的Click事件: C# Code: private void button1_Click(object sender, EventArgs e) { //获取采购订单PO的数据表结构 var bll = new bllPO(); var ds = bll.GetDataByKey("-", false); //主表:添加一条记录 var R1 = ds.Tables[tb_PO.__TableName].Rows.Add(); R1[tb_PO.PODate] = DateTime.Today; R1[tb_PO.Amount] = 15000; //明细表:添加记录1 var D1 = ds.Tables[tb_POs.__TableName].Rows.Add(); D1[tb_POs.ProductCode] = "CS5"; D1[tb_POs.Quantity] = 100; D1[tb_POs.Price] = 50; D1[tb_POs.Amount] = 5000; //明细表:添加记录2 var D2 = ds.Tables[tb_POs.__TableName].Rows.Add(); D2[tb_POs.ProductCode] = "CS4"; D2[tb_POs.Quantity] = 200; D2[tb_POs.Price] = 50; D2[tb_POs.Amount] = 10000; //模拟使用基础资料(数据字典)的DAL层更新主从表(或多表)数据 var result = bll.UpdateByDatadictDAL(ds); Msg.ShowInformation($"保存{(result ? "成功" : "失败")}"); //模拟使用基础资料(数据字典)的DAL层更新主从表(或多表)数据 var result1 = bll.UpdateByDatadictDAL_ex(ds); Msg.ShowInformation($"保存{(result1.Success ? "成功" : "失败")},单据号码:{result1.PrimaryKey}"); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 BLL层的方法: C# Code: public bool UpdateByDatadictDAL(DataSet ds) { //更新公共字段默认值 foreach (DataTable T in ds.Tables) this.UpdateCommonFieldsValue(T); //保存数据 return new dalPO_DataDictUpdate(Loginer.CurrentUser).Update(ds); } public SaveResultEx UpdateByDatadictDAL_ex(DataSet ds) { //更新公共字段默认值 foreach (DataTable T in ds.Tables) this.UpdateCommonFieldsValue(T); //保存数据 return new dalPO_DataDictUpdate(Loginer.CurrentUser).UpdateEx(ds); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 DAL层的方法: C# Code: /// <summary> /// 使用基础资料(数据字典)的DAL层更新主从表(或多表)数据 /// </summary> public class dalPO_DataDictUpdate : dalBaseDataDict { public dalPO_DataDictUpdate(Loginer loginer) : base(loginer) { _KeyName = tb_PO.__KeyName; //主键字段 _TableName = tb_PO.__TableName;//表名 _ModelType = typeof(tb_PO); _UpdateSummaryKeyMode = UpdateKeyMode.OnlyDocumentNo;//自动生成单据号码 } /// <summary> /// 根据表名获取该表对应的SQL命令生成器 /// </summary> /// <param name="tableName">表名</param> /// <returns></returns> protected override IGenerateSqlCommand CreateSqlGenerator(DataTable table) { Type ORM = null; if (table.TableName == tb_PO.__TableName) ORM = typeof(tb_PO); if (table.TableName == tb_POs.__TableName) ORM = typeof(tb_POs); if (ORM == null) throw new Exception(table.TableName + "表没有ORM模型!"); return new GenerateSqlCmdByTableFields(ORM, table, this.GeneratorFactory); } /// <summary> /// 重写方法,获取单据号码并且设置明细表外键的值 /// </summary> /// <param name="tran">当前事务</param> /// <returns></returns> protected override string GetNumber(DbTransaction tran) { string docNo = DocNoTool.GetDocNo(_Database, "PO");//获取单据号码 if (!String.IsNullOrWhiteSpace(docNo)) SetDetailKey(docNo);//设置明细表外键的值 return docNo; } /// <summary> /// 设置明细表的外键 /// </summary> /// <param name="docNo">主表的主键</param> private void SetDetailKey(string docNo) { foreach (DataRow R in _CurrentDataSet4Update.Tables[tb_POs.__TableName].Rows) { R[tb_POs.PONO] = docNo; } } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 提交的数据: 扫一扫加作者微信
参考文档:
C/S开发框架支持套打功能吗? 购买C/S开发框架如何授权?是可以随意修改源代码吗? 购买C/S开发框架后能升级为VIP吗? C/S开发框架MDI架构及Toolbar按钮共享(原创) C/S开发框架权限是控制到按钮级别的吗? C/S开发框架系统异常处理机制(Exception Handler) C/S开发框架V3.0模块引用层次关系表(原) C/S开发框架高级版部分源码截图 C/S开发框架事务处理机制 C/S开发框架企业版增加WCF服务自承载实时调试后台程序 C/S开发框架企业版数据库改名后需要修改的存储过程、函数和视图 C/S开发框架DAL层提交数据报错"外键值为空!"解决方案。 C/S开发框架支持加载数据库的FastReport.NET报表模板文件 - 功能升级 C/S开发框架提供类似SAP系统的快速命令,能快速打开界面窗体(Command模式) C/S开发框架的角色(Role)分类(普通角色、系统角色、数据角色、扩展角色)
其它资料:
什么是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内容管理系统 | |