1. 程式人生 > >MVC Scaffolding SmartCode-Engine 更新

MVC Scaffolding SmartCode-Engine 更新

  概述
  
  通過擴充套件visual studio.net scaffolding元件,添加了一套功能完善的程式碼模板,包括Controller,Model,View,Businessd等各種功能的程式碼,配合Entity Framework Code-Frist功能實現快速構建業務系統的一套開發工具.
  
  主要優勢
  
  市面上類似的程式碼生成工具有很多,但完全整合在visual studio.net以外掛形式存在的幾乎沒有,大部分都是通過先定義表結構(資料字典)再執行工具生成對應的程式碼.然後再手工拷貝到對應的專案中,而改專案就是簡單的多,只需要把實體物件定義出清楚,直接再專案中執行新增controller後選擇需要的實體物件就可以.非常快捷.
  
  不足之處
  
  目前scaffolding元件只能在一個solution中的單個project中新增原始碼檔案,還沒有辦法降不同層的程式碼新建到對應的project中去,比如根據實體對應分別新建不同的project,對大型專案的分工會更好.
  
  主要功能
  
  與Visual Studio.Net 2017無縫整合
  
  快速生成標準的C.R.U.D程式碼
  
  符合經典的Asp.Net MVC5 N層架構
  
  執行環境.Net framework 4.7.1+
  
  支援Sql Server,MySql,Oracle等主流資料庫
  
  前端Javascript採用ES6規範
  
  Github download Demo
  
  細節提升
  
  專案開始與2014年
  
  Controller升級非同步執行採用(async/await)
  
  使用Microsoft Unity DI & IoC
  
  前端採用Smart Admin模板
  
  前端控制元件一律採用Easyui元件
  
  前端Js Callback改成箭頭函式(Arrow Function)加入(async/await)方法
  
  新增對資料編輯模式的設定一種是彈出視窗操作,一種是直接在datagrid內部開啟編輯狀態
  
  更友好更詳細的操作資訊的提示
  
  為什麼使用EasyUI而不使用Smart Admin模板自帶的標準Input.主要標準的Input雖然樣式更漂亮,但功能比較單一,很多操作不是很方便,EasyUI社群比較活躍文件比較全面入手比較簡單.但不足之處就是與responsive htmj相容性不好,這裡主要是我對easyui css不熟導致
  
  程式碼模板
  
  模板    功能
  
  Controller.cs.t4    控制層程式碼與View層所有操作包括增刪改查的全部功能
  
  EntityQuery.cs.t4    查詢邏輯的封裝類參考URF.NET中的功能
  
  EntityRepositoryExtension.cs.t4    對實體物件的增刪改查的封裝參考URF.NET中的功能
  
  IEntityService.cs.t4    業務邏輯層程式碼參考URF.NET中的功能
  
  EntityService.cs.t4    業務邏輯層具體實現的程式碼參考URF.NET中的功能
  
  Index.cs.t4    主View程式碼包括datagrid現實,增刪改查的功能實現
  
  <context:component-scan base-package="com.anqi">
  
  <context:exclude-www.gouyiflb.cn  filter type=www.xiaomiyulezc.com  "annotation" expression="org.springframework.stereotype.Controller"/>
  
  </context:component-scan>
  
  <!--1、 建立目標類 -->
  
  <bean id="arithmeticCalculator" class="com.anqi.testAop.ArithmeticCalculatorImpl"></bean>
  
  <!--2、建立切面類(通知)  -->
  
  <bean id="logAspect" class="com.anqi.testAop.MyLogger"></bean>
  
  <aop:config>
  
  <aop:aspect ref="logAspect">
  
  <!-- 切入點表示式 也可以在通知內部分別設定切入點表示式 -->
  
  <aop:pointcut expression="execution(www.michenggw.com* com.anqi.testAop.*.*(..))" id="myPointCut"/>
  
  <!-- 配置前置通知,注意 method 的值要和 對應切面的類方法名稱相同 -->
  
  <aop:before method="before" pointcut-ref="myPointCut" />
  
  <aop:after method="after" pointcut-ref="myPointCut" />
  
  <aop:after-returning method="testAfterReturn" returning="result" pointcut-ref="myPointCut"/>
  
  <aop:after-throwing method=www.dasheng178.com"testException" throwing="e" pointcut="execution(* com.anqi.testAop.ArithmeticCalculator.div(..))"/>
  
  <!--<aop:around method="testRound"  pointcut-ref="myPointCut"  /> 最強大,但是一般不使用-->
  
  </aop:aspect>
  
  </aop:config>
  
  _PopupDetailFormView.cs.t4    彈出框操作表單
  
  ...    輔助功能程式碼
  
  ...