在构思完系统思惟脑图后,小墨回到家中,便摩拳擦掌开始了开发工做。要想迅速完成系统开发,前期系统设计和准备尤为重要,由于小墨作过太多大大小小的业务系统,准备工做也是十分顺利。架构
整个系统工程结构如上,基于传统的三层架构模式(不太懂的快去恶补一下)app
话很少说,直接上干货工具
虽然说李老板的芒果业务系统是如此的简单,可一贯有着强迫症的小墨仍然有板有眼的规划系统的各个架构功能,作事尽善尽美是小墨的一向做风。日志能省吗,固然不能!如下集成Log4net.
优化
这里直接右键解决方案Nuget中搜索Log4net,安装最新版5.2.7加密
<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net debug="true"> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Logs/Log" /> <appendToFile value="true" /> <rollingStyle value="Composite" /> <staticLogFileName value="false" /> <datePattern value="_yyyy.MM.dd.'log'" /> <maxSizeRollBackups value="20" /> <maximumFileSize value="5MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> </layout> </appender> <root> <level value="DUBEG" /> <appender-ref ref="RollingLogFileAppender" /> </root> </log4net> </configuration>
几点必要说明:debug
<file value="Logs/Log" /> 配置logs打印路径 <staticLogFileName value="false" /> 配置Log文件名非静态,由于小墨想天天生成一个Log文件 <datePattern value="_yyyy.MM.dd.'log'" /> 日志文件格式 Log_2020.03.20.log
public class LoggerFactory { public static void Config() { var baseDir = AppDomain.CurrentDomain.BaseDirectory; var filePath = Path.Combine(baseDir, "Config\\Log4net.config"); var fileInfo = new FileInfo(filePath); log4net.Config.XmlConfigurator.Configure(fileInfo); } }
而后就能够优雅的使用日志啦!设计
//声明3d
ILog logger = log4net.LogManager.GetLogger(typeof(MvcApplication));
//使用代理
logger.Info("大青芒管理系统已启动.");
这里能够再将ILog包装下,支持参数化打印日志,能够在优化下。日志
首先说明下整个系统的Model,Dto , Entity,根据业务须要定义也是比较简单,主要分为用户(代理表),订单表,因此就有
UserModel/UserInfo/UserEntity
OrderModel/OrdeDto/OrderEntity
这里不可避免的用到各个对象的互相转化,固然咱们必定不会挨个字段赋值的,很弱,这里咱们使用用AutoMapper,由于以后他普遍应用在咱们以后的业务中。
这里由于,个人Dto与Entity都是简单类型,并且类型都是一致的,因此能够直接Map,可是通常在稍微复杂的业务中,Dto中常常会嵌套其余Dto,或者字段类型也是不匹配的,咱们主要使用AutoMapper的如下两个方法去作转换,这里我不作举例了。
ForMember ResolveUsing
Global.asax.cs系统启动时,启动Map配置。这里在Service层引入一个AutoMapperInit类,过渡一下调用Repository的Initialize方法,是为了避免想再Service层引入AutoMapper包,全部Dto与Entity的转换在Repository里处理
AutoMapperInit.Init();
使用AutoMapper
感谢阅读!
本文由博客群发一文多发等运营工具平台 OpenWrite 发布