|
C/S框架后台数据更新模型之ORM自动生成SQL基本原理
![]() 基于ADO.NET框架提交更新数据需要程序员写代码,使用DataAdapter.Update()方法提交数据, 后来接触NHibernate架构组件,在我们的一个应用系统中成功运用了,刚接触新技术总是感兴趣的,很快进入状态,后来发现配置NHibernate所需的XML文件实在太多,维护带来的工作量也特别大,随着系统迭代升级,变的越来越复杂。 NHibernate配置的XML文件对我有所启发,为什么要使用XML? 若改为C#语言的静态类或实体类是否更有效? 请看下面代码: public class TProduct { [TableAttribute (true, false, true)] public static string TableName = "tb_MyProduct"; [TableAttribute (false, true, false)] public static string KeyName = "ProductCode"; [FieldAttribute (SqlDbType.Int, 4, false, false, false, false, false)] public static string isid = "isid"; [FieldAttribute (SqlDbType.NVarChar, 20, false, true, false, false, false)] public static string ProductCode = "ProductCode"; [FieldAttribute (SqlDbType.NVarChar, 50, false, true, false, false, false)] public static string ProductName = "ProductName"; [FieldAttribute (SqlDbType.Decimal, 18, false, true, false, false, false)] public static string SellPrice = "SellPrice"; [FieldAttribute (SqlDbType.NVarChar, 50, false, true, false, false, false)] public static string Supplier = "Supplier"; [FieldAttribute (SqlDbType.NVarChar, 100, false, true, false, false, false)] public static string Remark = "Remark"; } 这个类有两个功能: 1.用于自动生成SQL语句 2.定义了 表结构字段名,在其它类引用字段名时可使用: //字段名 TProduct.ProductCode
string key = data.Tables[TProductTake.TableName].Rows[0][TProductTake.TakeNo].ToString (); 使用方法 假设我们定义了更新【盘点数据】的类,只需要实现GetTypeByTableName及Update方法 /// <summary> /// 业务逻辑管理主类. www.csframework.com 版权所有 /// </summary> public class DataManager : DataUpdate { public DataManager(OleDbConnection conn) : base(conn) { // } protected override Type GetTypeByTableName(string tableName) { if (tableName == TProductTake.TableName) & nbsp; return typeof (TProductTake); if (tableName == TProductTakeDetail.TableName) & nbsp; return typeof (TProductTakeDetail); throw new Exception("没绑定数据表结构 定义!"); } public bool Update(System.Data.DataSet currentBusiness, UpdateType updateType) { return base.Update (currentBusiness); } 在界面层调用 : private void TestSave() { //初始化业务逻辑 DataManager dataManager = new DataManager(DataProvider.Instance.CreateConnection()); DataSet data = null;//你要保存的数据 dataManager.Update(data); } 数据更新流程 ![]() Source code for VIP:
参考文档:
开发技巧-Winform窗体自动生成下一个业务流程的单据|C/S框架网 C/S系统快速开发平台SQL命令生成器(数据自动更新模型) ORM_FieldAttribute类详解:字段特性定义,框架内核根据此特性自动生成SQL脚本 CSFramework代码生成器自动生成主从表界面-C/S框架网 基于C#.NET C/S快速开发框架 - 代码自动生成功能 C/S架构的Winform 代码生成器软件|C/S框架网原创作品 C#开发框架 ORM 及后台数据更新程序关键组成部分 客户要求开发框架能自动生成数据窗体及log日志表 C/S开发框架标准版-后台数据更新流程图(例子)
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 3.0高级版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | |
|