發布一個O/R M組件(開源)

來源:互聯網
上載者:User

    很早前就已經有計划去做這樣一個組件了(有部分地方是參考nhibernate的.
可能有些人會問nhibernate很不錯為什麼還要自己寫一個?寫得過程中可以學到很多東西的!
當然組件並沒有nhibernate那麼強大,代碼量也遠遠不及nhibernate只有幾千行);
由於工作關係和自己又是比較懶惰的人,所以到現在才完成大概的功能.
本來打算進一步完善後才把組件開源的,可惜工作和惰性原因:)不知道什麼時候才完成.
所以在這裡把組件公開,如果有興趣的朋友對它進行修改和完善(注意:使用前請看下協議檔案).
   
HFSOFT.DATA的目的主要是方便開發人員快速簡單地完成資料操作,從而提高開發效率。
--現在版本所支援的功能有:
    1.多資料庫支援
      暫時提供SQLServer,Access,Oracle資料庫提供者.
      可以通過IDriver實現新資料庫提供者。
    2.支援對象映射操作
      對象添加
      對象修改
      物件查詢
    3.支援對象關係擷取
      子物件無限層次的擷取,暫時只支援IList介面
      父物件一層擷取,支援對應類型的實體物件
      暫時不支援關聯性物件更新操作
    4.支援物件查詢條件
      提供的查詢對象有:=,<>,>,>=,<,<=,like,In,NotIn,BETWEEN,Not BETWEEN
    5.支援直接SQL的參數化查詢
    6.支援直接Command執行
    7.支援IList,DataSet資料集擷取
    8.支援事務
--後續版本完善的功能
    記錄動作記錄跟蹤,可以根據自己的情況來實現日誌操作類.
    關聯性物件擷取的改進,實現可指定擷取相應的關聯性物件包括(不擷取,擷取所有,擷取父,擷取子,擷取指定類型等);
    關聯性物件更新操作,同樣實現可指定類型更新.
    命令對象緩衝
    實體物件緩衝(還在想同步方案)
    記錄集緩衝
--具體調用功能方法描述
    - IDataReader ExecuteReader(IDbCommand cmd);
 執行命令對象並返回一個資料讀取對象

    - object ExecuteScalar(IDbCommand cmd);
 執行命令對象並返回一個對象值

    - int ExecuteNonQuery(IDbCommand cmd);
 執行命令對象並返回受影響的記錄數

    - DataSet ExecuteDataSet(IDbCommand cmd);
 執行命令對象並返回一個資料集對象

    - void ExcuteCmds(params IDbCommand[] cmd);
 批執行命令對象

    - void Open();
 開啟資料庫連接

    - void Close();
 關閉資料庫連接

    - void BeginTran();
 開啟資料庫事務

    - void Commit();
 提交事務

    - void RoolBack();
 復原事務

    - void Delete(object entity);
 刪除指定的實體物件

    - void Save(object entity);
 添加指定的實體物件
 
    - void Update(object entity);
 更新指定的實體物件

    - object Load(Type type, object id);
 擷取指定類型索引的實體物件

    - IList List(Type type, IExpression expression);
 根據條件對象擷取相應類型的對象集

    - IList List(Type type, string query, object[] values);
 根據參數化的SQL查詢條件擷取相應類型的對象集

    - void DeleteObjects(Type type, IExpression expression);
 根據條件對象刪除相應類型的對象集

    - void DeleteObjects(Type type, string query, object[] values);
 根據參數化的SQL查詢條件刪除相應類型的對象集

    - DataSet ListDS(Type type, IExpression expression);
 根據條件對象擷取相應類型的資料集

    - DataSet ListDS(Type type, string query, object[] values);
 根據參數化的SQL查詢條件擷取相應類型的資料集

    - void UpdateObjects(Type type, FieldCollection fields, IExpression expression);
 根據條件對象更新指定類型的欄位資訊

    - void UpdateObjects(Type type, FieldCollection fields, string query, object[] values);
 根據參數化的SQL查詢條件更新指定類型的欄位資訊

    - IQuery CreateQuery();
 擷取一個查詢對象

下載應用案例和源碼
如果有興趣交流的朋友可以發郵件henryfan@msn.com或henryfan28@gmail.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.