程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第十二講 基於反射和動態編譯的快速ORM框架(下)(2)

C#發現之旅第十二講 基於反射和動態編譯的快速ORM框架(下)(2)

編輯:關於C語言
這裡我們首先輸出檢查參數的代碼文本,然後遍歷所有綁定字段的 屬性對象,根據屬性的數據類型分為字符串樣式,日期樣式和其他樣式。對於字符串樣式則 需要輸出判斷是否為空的代碼,對於日期樣式則還要考慮BindFIEldAttribute特性中指明的 數據保存樣式,對於其他樣式則沒有任何判斷,直接輸出。

生成刪除數據的代碼

基礎類型RecordORMHelper預留了FillDeleteCommand函數,代碼生成器自動生成代碼 來實現FillDeleteCommand函數,而ORM框架就會創建一個數據庫命令對象,然後調用 FillDeleteCommand函數來為刪除數據而初始化數據庫命令對象,然後執行SQL命令刪除數據 。

在DB_Employees中使用一下代碼來定義EmployeeID屬性的。

///<summary>
/// 字段值 EmployeeID
///</summary>
private System.Int32 m_EmployeeID = 0 ;
///<summary>
/// 字段值 EmployeeID
///</summary>
[BindFIEld("EmployeeID" , Key = true )]
public System.Int32  EmployeeID
{
     get
     {
          return m_EmployeeID ;
     }
     set
     {
         m_EmployeeID = value;
     }
}

附加的BindFIEld特性中使用了“Key=true”指明了EmployeeID字段是關鍵字段。 於是我們很容易就想到使用SQL語句“Delete From Employees Where EmployeeID=指定 的員工編號”來刪除數據。於是針對DB_Employees代碼生成器生成的代碼如下

public override int FillDeleteCommand( System.Data.IDbCommand  cmd , object objRecord )
{
    if( cmd == null ) throw  new ArgumentNullException("cmd");
    if( objRecord == null )  throw new ArgumentNullException("objRecord");
    MyORM.DB_Employees  myRecord = objRecord as MyORM.DB_Employees ;
    if( myRecord ==  null ) throw new ArgumentException("must type  'MyORM.DB_Employees' ");
    cmd.Parameters.Clear();
     cmd.CommandText = @"Delete From Employees Where EmployeeID = ? " ;
    System.Data.IDbDataParameter parameter = null ;

     parameter = cmd.CreateParameter();
    parameter.Value =  myRecord.EmployeeID ;
    cmd.Parameters.Add( parameter );

    return 1 ;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved