在構思完系統思惟腦圖後,小墨回到家中,便摩拳擦掌開始了開發工做。要想迅速完成系統開發,前期系統設計和準備尤爲重要,由於小墨作過太多大大小小的業務系統,準備工做也是十分順利。架構
整個系統工程結構如上,基於傳統的三層架構模式(不太懂的快去惡補一下)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>
幾點必要說明:spa
<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); } }
而後就能夠優雅的使用日誌啦!debug
//聲明設計
ILog logger = log4net.LogManager.GetLogger(typeof(MvcApplication));
//使用3d
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 發佈
感謝閱讀!
本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈