很早前就已經有計划去做這樣一個組件了(有部分地方是參考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