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 }
参考该方法,定义其他的数据库访问方法。
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 测试获取数据
具体请参见 源码中 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);
例如,需要批量增加删除修改数据,则可以使用 AddUpdateDelete 方法,批量获取多个表的数据,则可以使用 GetDataSet 方法。
三、项目开源地址
本组件已开源,项目地址为 https://github.com/yuchen1030/LogORM 。建议使用的VS工具为VS2017。当然,如果你只是使用该组件,随便你使用VS2012,VS2013,VS2015等工具。
摈弃繁冗重复的数据访问层代码,使用LogORM愉快地编程吧🤝🤝🤝