程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 高性能ORM框架XLinq功能詳細介紹,高性能orm框架xlinq

高性能ORM框架XLinq功能詳細介紹,高性能orm框架xlinq

編輯:C#入門知識

高性能ORM框架XLinq功能詳細介紹,高性能orm框架xlinq


之前簡單介紹了XLinq的一些功能,有很多功能都沒有提到,現在給XLinq加了一些功能,這次把所有功能都介紹一遍。

設計目標

使用方法

  • 建立TestDataContext類和User實體類
  • 開始使用
  • 查詢

    LINQ版:

    LINQ版看起來明顯感覺比較麻煩,所以在簡單查詢的時候我更傾向於Lambda表達式

    上面的語句生成的代碼是一致的

  • 多表查詢

    建立實體類的過程不再說

    兩個表連接查詢,因為用Lambda實現比較復雜,所以後面都不再用Lambda實現

    生成的語句

    五個表連接查詢

    生成的語句

  • 左連接查詢

    因為linq本身的左連接寫法比較蛋疼,所以xlinq也沒有辦法,後面會想辦法簡化

    生成的語句

  • 延遲加載
  • 自連接查詢

    生成的語句

  • SQL語句查詢
  • 分頁查詢

    生成的語句

  • 動態查詢

    生成的語句

  • 取日期查詢

    這個功能主要針對EF中無法直接取日期的問題

  • 計算天數查詢

    生成的語句

  • 修改

  • 直接修改

    Update子句必須采用這寫法才會有效

  • 刪除

  • 直接刪除
  • 事務

  • 嵌套事務
  • 調試支持

    在調試的時候可直接看到SQL語句

    多數據庫支持

    通過配置文件實現多數據庫支持

    鏈式Api

    有沒有園友注意到,我上面用的User實體並沒有進行任何特殊處理,但實際翻譯出來的語句是識別的Users表

    這其實是"抄"的EF的約定大於配置的原則,默認情況下,實體名的復數就是表名,實體中的Id識別為主鍵並自動增長

    如果需要自定義這些規則,則需要使用特性或鏈式API,我現在更喜歡鏈式API

    重寫DataContext的ConfigurationModel方法即可使用鏈式API對實體相關信息進行配置,上面是指定了User實體的表名、主鍵及主鍵的數據來源為自動增長

    創建表

    若要創建表,則幾乎必須使用鏈式API對實體進行配置之後才能進行自動創建

    另外這個功能有一定的限制,默認情況下不會啟用該功能,若啟用了也只有在數據庫中一個表都沒有的情況下才會自動創建表

    這樣做是因為真正的數據庫運行環境其實很可能壓根不允許自動創建表,然後就是下面這個樣子,這樣一來這個功能其實並沒有太大用,只有在第一次初始化數據庫的時候才會用。

    當然也可以始終自動創建表,這個需要稍微配置一下,當allwayAutoCreateTables為true時並且autoCreateTables為true時,將始終自動創建表

    下面演示創建一個Test表

    DataContext中的配置

    創建的表

    自定義Provider(有這功能,但沒有測試)

    性能

     

    測試結果

     

     

    查詢一次的情況下EF慢的妥妥的,XLinq微弱優勢

    查詢N次的情況下EF這···還有人說EF慢?不過大概是因為緩存的原因,但最後一張圖看著又不太像,或許還跟GC什麼的關吧,所以還有人說EF慢麼··

    或者是我測試代碼有問題?

  • 插入

    測試結果

  • 測試源碼下載

    http://files.cnblogs.com/files/wzxinchen/XlinqDemo.zip

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved