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愉快地编程吧???