Farseer.net輕量級ORM開源框架 V1.2版本升級消息


V1.1到V1.2的更新,重構了很多類及方法,其中主要做了性能優化(取消所有反射,使用表達式樹+緩存)、解耦了SQL生成層(沒有實體、隊列的依賴,所有數據均通過表達式樹傳遞解析)

先上內部更新歷史記錄:

接近20天的工作量,有45處變化。修復了已知的BUG、並新增了一些功能,詳細如下:

15處重構
  1. 重構:SQL日志記錄功能
  2. 重構:ExpressionVisitor解析器,重命名為AbsSqlVisitor(SQL解析專用基類),繼承自AbsExpressionVisitor(通用解析類)
  3. 重構:SelectVisitor字段篩選解析器,改為只為字段篩選服務(舊的與排序共用)
  4. 重構:Select表達式樹,由原來的List<Expression> 合並為一個Expression(合並了)
  5. 重構:Insert、Update的實體賦值傳遞到SQL生成類 改為轉成表達式樹傳遞
  6. 重構:重構AddAssign的實現,由原來的Dictionary<Expression, bool> Assign 改為 Expression(合並了)
  7. 重構:將SQL、DbParam、Name從Queue移到ISqlBuilder中,由SqlBuilder繼承並為每個方法返回
  8. 重構:部份屬性、方法、類的命名優化
  9. 重構:隊列管理由TableQueueManger、ProcQueueManger、ViewQueueManger合並為:QueueManger
  10. 重構:數據庫上下文由TableContext、ProcContext、ViewContext合並為:DbContext
  11. 重構:減少Queue代碼(表達式樹合並代碼,統一放到ExpressionBuilder類中管理
  12. 重構:減少Queue在全局的依賴,改為新增接口依賴
  13. 重構:非每次查詢新實例的對象移到DbContext
  14. 重構:取消AbsSqlVisitor對Queue的依賴
  15. 重構:取消SqlBuilder對Queue的依賴(用戶需要實現自己SQL下更方便)
7處優化
  1. 優化:SQL日志記錄工具
  2. 優化:TableSetCache緩存中UpdateAddUp的處理,由反射改為委托執行
  3. 優化:表達式樹的SetValue方法 + 緩存(代替舊PropertyInfo.SetValue反射)
  4. 優化:表達式樹的GetValue方法 + 緩存(代替舊PropertyInfo.GetValue反射)
  5. 優化:表達式樹的CreateInstance方法 + 緩存(代替舊Activator.CreateInstance(type)反射)
  6. 優化:DataTable轉ToList操作
  7. 優化:AssignVisitor解析器,讓它支持所有賦值操作
11處新增
  1. 新增:TableSetCache方法,動態返回TableSetCache類型
  2. 新增:IEnumerable<>.ToList 的 總數量擴展方法
  3. 新增:IDbSet接口,所有Set類繼承此接口,以添加擴展支持
  4. 新增:運行異常日志功能及相應的分析器工具(簡單代替log4net,僅未捕獲異常記錄)
  5. 新增:反序列化時,如果失敗,則添加移動錯誤格式的文件選項參數
  6. 新增:AbsExpressionVisitor通用的表達式樹解析器(可自由擴展加入所需的功能)
  7. 新增:OrderByVisitor字段排序解析器
  8. 新增:AssignVisitor賦值解析器,解析Update、AddUp的實體賦值情況
  9. 新增:InsertVisitor賦值解析器,解析Insert的實體賦值情況
  10. 新增:SortDelete邏輯刪除功能,支持(bool、int、DateTime標記類型),TableSet調用Delete時,轉為邏輯刪除(Update),查詢時過濾標記數據。
  11. 新增:IContextProvider接口、ISqlParam接口。ExpressionBuilder表達式樹創建者(條件、排序、篩選、賦值)
7處修改
  1. 修改:變更分類擴展方法的參數類型
  2. 修改:web.config配置文件重命名為:WebGeneral.config(與.net web的web.config編譯時沖突)
  3. 修改:變更SqlExceptionLog配置文件名稱
  4. 修改:異常的郵件通知配置變名(變成通用的郵件通知,包括SQL異常、運行異常及未來增加的需要提醒的郵件)
  5. 修改:SelectVisitor中Visit方法的返回值(無值時返回*)
  6. 修改:FieldMap重命名為SetState
  7. 修改:去除DbWriteSet
5處修復
  1. 修復:郵件發送的BUG
  2. 修復:TableSet,Update時,如果主鍵設置了值之后,要過濾該值的賦值
  3. 修復:TableSetCache,Update時沒有對緩存限制條件,導致全部緩存被修改
  4. 修復:修復類型枚舉轉換失敗的BUG
  5. 修復:字段映射BUG


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM