ORM组件LogORM使用指北

Posted yuchen1030

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORM组件LogORM使用指北相关的知识,希望对你有一定的参考价值。

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

以上是关于ORM组件LogORM使用指北的主要内容,如果未能解决你的问题,请参考以下文章

PHP 独立使用 laravel ORM 数据库组件,PHP ORM数据库模型组件

PHP 独立使用 laravel ORM 数据库组件,PHP ORM数据库模型组件

全栈 指北

[Doctrine Migrations] 数据库迁移组件的深入解析四:集成diff方式迁移组件

.NET轻量级ORM组件Dapper修炼手册

.NET轻量级ORM组件Dapper修炼手册