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

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

先上內部更新歷史記錄:

接近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
相關文章
相關標籤/搜索