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

基于ADO.NET框架提交更新数据需要程序员写代码,使用DataAdapter.Update()方法提交数据,
作者使用5年的Delphi开发工具,Delphi只需调用ADOQuery.Update()就行了,不需要写更新代码(特殊处理除外)。从Delphi转VS期间,确实没进入状态,非常不习惯。  

C/S开发框架

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

作者开发很多基于数据应用系统,最原始提交数据的方法是使用Update,Insert,Delete三种SQL语句,后来发现数据表越多写的SQL越多,导致开发周期变长,SQL脚本的代码量与开发耗用时间是成正比的。

后来接触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);

        }



数据更新流程


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


Source code for VIP:

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