C/S框架后台数据更新模型之ORM自动生成SQL基本原理
作者:C/S框架网  发布日期:2011/06/16 23:18:20
  C/S框架后台数据更新模型之ORM自动生成SQL基本原理

基于ADO.NET提交数据需要程序员写代码,使用DataAdapter.Update()方法提交数据前要实现3个DbCommand,分别是InsertCommand、UpdateCommand、DeleteCommand。作者有5年Delphi开发经验,Delphi只需调用ADOQuery.Update()就行了,不需要写3个DbCommand以及任何SQL脚本(特殊处理除外)。


C/S开发框架


说说CSFramework.COM后台数据更新模型


作者开发过多套基于数据管理应用系统,最原始的提交数据常用方法是使用Update,Insert,Delete三种SQL语句,数据表越多写的SQL越多,效率很低,开发周期变长。后来接触NHibernate组件,在我们的一个系统中成功应用了,接触新技术总是兴奋的,快速进入状态。在项目中期阶段,发现配置NHibernate所需的XML文件实在太多,维护带来的工作量也特别大,随着系统迭代升级,变的也越来越复杂。


NHibernate配置的XML文件对我有所启发,为什么要使用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);

        }





数据更新流程




C/S框架后台数据更新模型之ORM自动生成SQL基本原理





C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


Source code for VIP:

点击下载附件 点击下载附件 (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)
上一篇 下一篇