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

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

編輯:關於C語言

這個函數的 參數是SQL查詢語句和實體對象類型。在這個函數中,首先是調用CheckConnection函數來檢 查數據庫的連接狀態,然後使用GetHelper函數獲得對應的數據庫操作幫助類,然後執行SQL 查詢,獲得一個數據庫讀取器,然後調用數據操作幫助類的ReadRecords獲得一個列表,該列 表就包含了查詢數據所得的實體對象。這個過程沒有使用反射,執行速度非常快,使用這個 快速ORM框架,執行速度跟我們傳統的手工編寫代碼創建實體對象的速度是一樣的,但大大降 低了我們的開發工作量。

在快速ORM框架中,根據ReadObjects函數派生了ReadObject ,ReadAllObject等系列讀取數據的函數,其原理都是一樣的。

刪除數據 DeleteObject

在快速ORM框架中定義了一個DeleteObject函數用於刪除數據,其代碼 為

public int DeleteObject( object RecordObject )
{
      this.CheckConnection();
     if( RecordObject == null )
     {
         throw new ArgumentNullException ("RecordObject");
     }
     RecordORMHelper helper =  this.GetHelper( RecordObject.GetType() );
     using(  System.Data.IDbCommand cmd = this.Connection.CreateCommand())
      {
         if( helper.FillDeleteCommand( cmd , RecordObject )  > 0 )
         {
              return  cmd.ExecuteNonQuery();
         }
     }
      return 0 ;
}

這個函數的參數就是要刪除的對象,在函數中,首先調 用GetHelper函數獲得數據操作幫助器,然後創建一個數據庫命令對象,調用幫助類的 FillDeleteCommand函數初始化數據庫命令對象,然後執行該命令對象即可刪除數據,過程簡 單明了。ORM框架還定義了DeleteObjects函數用於刪除多個實體對象,其原理和 DeleteObject函數一樣。

更新數據 UpdateObject

快速ORM框架定義了 UpdateObject函數用於更新數據,其代碼為

public int UpdateObject(  object RecordObject )
{
     this.CheckConnection();
      if( RecordObject == null )
     {
         throw  new ArgumentNullException("RecordObject");
     }
      RecordORMHelper helper = this.GetHelper( RecordObject.GetType());
      using( System.Data.IDbCommand cmd = this.Connection.CreateCommand())
     {
         int fIElds = helper.FillUpdateCommand(  cmd , RecordObject );
         if( fIElds > 0 )
          {
              return cmd.ExecuteNonQuery ();
         }
     }
     return 0 ;
}

過程很簡單,首先使用GetHelepr函數獲得數據庫幫助器,然後調用它的 FillUpdateCommand函數來設置數據庫命令對象,然後執行數據庫命令對象即可完成刪除數據 的操作。ORM框架還定義了 UpdateObjects函數用於更新多條數據庫記錄,其原理和 UpdateObject函數是一樣的。

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