ORM組件LogORM使用指北

  • 2019 年 10 月 3 日
  • 筆記

   LogORM是一個對資料庫進行對象關係映射的ORM組件。當對資料庫進行增刪改操作時,組件會自動進行日誌記錄。 該組件支援.Net平台和.NetCore平台,支援SQL Server、Oracle、MySQL資料庫,可以方便地擴展到其他資料庫。 使用該組件,可以顯著地減少開發人員在資料庫訪問和日誌記錄上的程式碼工作量,使得開發人員集中精力來實現他們的業務邏輯。

  使用本組件,可以在同一個項目中訪問不同的資料庫類型的不同資料庫,例如可以同時訪問Sql Server的DB1/DB2、Oracle資料庫的DB3/DB4、MySql資料庫的DB5/DB6等6個資料庫的數據。

 一、使用方法

  本組件是基於Log2Net的,因此使用方法類似於Log2Net。

1 引用組件

  在VS開發工具的nuget中,搜索 LogORM 組件安裝即可。

 

 

   我也是醉了,log4net還是出現在第一位,第二個才是我們所要的。但是,搜索全大寫的 LOGORM,終於讓LogORM出現在第一個,??

 

 

   猜猜看,nuget使用了神馬搜索匹配演算法?

  我們也可以通過Nuge官網來下載和安裝: https://www.nuget.org/packages/LogORM/  。但建議使用VS工具的nuget來安裝。

2 日誌組件Log2Net的註冊

  因為本組件中的日誌記錄是通過Log2Net來實現的,因此需要註冊該日誌組件,同樣是在應用程式初始化的地方,調用  LogApi.RegisterLogInitMsg(SysCategory sys, object applicationObj = null, UserCfg userConfig = null, Dictionary<SysCategory, string> webAppName = null, bool bWriteStartLog = true, bool bLogMonitor = true);各參數含義參見 日誌組件Log2Net的介紹和使用(附源碼開源地址)一文中的介紹。

  若不需要使用本組件自帶的日誌記錄功能,則可以不註冊Log2Net組件。

3 日誌組件的配置

  在網站項目下,添加 Log2NetCfg.config 文件,在該文件中進行Log2Net組件的配置,在web.config文件中進行Log2Net模組聲明和日誌資料庫連接字元串等。具體配置介紹參見 日誌組件Log2Net的介紹和使用(附源碼開源地址)一文。

  若不需要使用本組件自帶的日誌記錄功能,則可以不配置Log2Net組件。

4 資料庫實體的資料庫訪問方法定義

  就是繼承本組件中定義的LogORMBaseDal方法,重寫該資料庫表中的相關參數。例如 Log_OperateTrace 為資料庫中中Log_OperateTrace表的實體類定義,則資料庫訪問方法定義如下:

 1     public class Log_OperateTraceAdoDal : LogORMBaseDal<Log_OperateTrace>   2     {   3         protected override CurrentDalParas CurDalParas   4         {   5             get   6             {   7                 return new CurrentDalParas()   8                 {   9                     CurDatabaseType = DBStoreType.SqlServer,  10                     DBConStringKey = "logTraceSqlStr",  11                     TableName = "Log_OperateTrace",  12                     PrimaryKey = "Id",  13                     SkipCols = new string[] { "Id" },  14                     Orderby = "Id",  15                 };  16             }  17         }  18     }

View Code

  參考該方法,定義其他的資料庫訪問方法。

5 調用資料庫訪問方法,訪問資料庫。

  舉例如下:

 1             var curDal = new Log_OperateTraceAdoDal();   2             DBOperUser dbUser = new DBOperUser() { UserId = "CNNO2", UserName = "李大大" };   3   4             #region 測試獲取數據   5             var dbData = curDal.GetAll(new LogORM.Models.PageSerach<Log_OperateTrace>()   6             {   7                 Filter = a => a.Id > 0,   8                 OrderBy = a => a.OrderByDescending(m => m.LogTime),   9                 PageSize = 2  10             });  11             var dbModels = DtModelConvert<List<Log_OperateTrace>>.DeepClone(dbData.ExeModel);  12             var selectModels = dbModels.ConvertAll(a => (object)a);  13             #endregion 測試獲取數據

View Code

  具體請參見 源碼中 LogORMWeb_net45 項目和 LogORMWeb_DNC項目中 HomeController控制器中的方法。

二、LogORM組件中定義的方法

  前文介紹了使用方法,那麼,使用該組件,可以使用那些方法呢?就是資料庫的增刪改查等方法。

 1         //添加一個實體   2         ExeResEdm Add(AddDBPara<T> dBPara, DBOperUser dbLogMsg = null);   3   4         //批量添加實體   5         ExeResEdm Add(List<T> list, DBOperUser dbLogMsg = null);   6   7         //根據欄位更新   8         ExeResEdm Update(Dictionary<string, object> whereParas, Dictionary<string, object> updateFDList, DBOperUser dbLogMsg = null);   9  10         //根據欄位更新實體  11         ExeResEdm Update(T model, List<string> whereParas, DBOperUser dbLogMsg = null);  12  13         //批量更新  14         ExeResEdm Update(List<T> list, List<Dictionary<string, string>> updateFDList, DBOperUser dbLogMsg = null, string strComFields = "*");  15  16         //批量進行添加/更新/刪除  17         ExeResEdm AddUpdateDelete( DBOperUser dbLogMsg = null, params AddUpdateDelEdm[] models);  18  19         //根據id軟刪除  20         ExeResEdm Delete(object id, DBOperUser dbLogMsg = null);  21  22         //刪除某個實體  23         ExeResEdm Delete(T model, DBOperUser dbLogMsg = null);  24  25         //根據欄位刪除  26         ExeResEdm Delete(Dictionary<string, object> whereParas, DBOperUser dbLogMsg = null);  27  28  29         //根據id軟刪除  30         ExeResEdm SoftDelete(object id, DBOperUser dbLogMsg = null);  31  32         //軟刪除某個實體  33         ExeResEdm SoftDelete(T model, DBOperUser dbLogMsg = null);  34  35         //根據條件軟刪除  36         ExeResEdm SoftDelete(Dictionary<string, object> whereParas, DBOperUser dbLogMsg = null);  37  38         //執行Sql語句  39         ExeResEdm ExecuteNonQuery(string cmdText,DBOperUser dbLogMsg = null, params DbParameter[] parameters);  40  41         //執行ExecuteScalar語句  42         ExeResEdm ExecuteScalar(string cmdText, DBOperUser dbLogMsg = null, params DbParameter[] parameters);  43  44         //執行存儲過程  45         ExeResEdm ExecuteStoredProcedure(string storedProcedureName, DBOperUser dbLogMsg = null, params DbParameter[] parameters);  46  47         //執行事務  48         ExeResEdm ExecuteTransaction(List<SqlContianer> ltSqls, DBOperUser dbLogMsg = null);  49  50         //獲取分頁數據  51         ExeResEdm GetAll(PageSerach<T> para, DBOperUser dbLogMsg = null);  52  53         //獲取DataSet數據  54         ExeResEdm GetDataSet(List<SqlContianer> ltSqls, DBOperUser dbLogMsg = null);  55  56         //獲取DataSet數據  57         ExeResEdm GetDataSet(string cmdText, DBOperUser dbLogMsg = null, params DbParameter[] parameters);  58  59         //獲取一個數據表的表結構  60         ExeResEdm SelectDBTableFormat( DBOperUser dbLogMsg = null ,string strField = "*");  61  62         //獲取查詢的SQL語句  63         CRUDSql GetSelectSql(T searchPara,  List<string> selectFields = null);  64  65         //獲取插入的SQL語句  66         CRUDSql GetInsertSql<M>(M model, string tableName, bool bParameterizedQuery);  67  68         //檢查指定條件的數據是否存在  69         ExeResEdm Exist(Dictionary<string, object> whereParas, DBOperUser dbLogMsg = null);  70  71         //檢查某個實體是否存在  72         ExeResEdm Exist(T model, DBOperUser dbLogMsg = null);

View Code

例如,需要批量增加刪除修改數據,則可以使用 AddUpdateDelete 方法,批量獲取多個表的數據,則可以使用 GetDataSet 方法。

三、項目開源地址

  本組件已開源,項目地址為 https://github.com/yuchen1030/LogORM 。建議使用的VS工具為VS2017。當然,如果你只是使用該組件,隨便你使用VS2012,VS2013,VS2015等工具。

 

       擯棄繁冗重複的數據訪問層程式碼,使用LogORM愉快地編程吧???