新玩具 linq2db 入手,一定要拿來測測效能的,我準備了三張表,裡面各有一百萬筆,有兩種讀取方式,一個是讀取某一張表,一個是Join兩張表
[linq2db] lInq2db、EF、Dapper 查詢大量資料效能比較
- 5912
- 0
- ORM Performance
- 2021-07-18
新玩具 linq2db 入手,一定要拿來測測效能的,我準備了三張表,裡面各有一百萬筆,有兩種讀取方式,一個是讀取某一張表,一個是Join兩張表
Dapper 一直以來都是我使用 ORM 的選擇之一,現在又多了一個選項那就是 'linq2db',他比 Dapper 多了更多的 CUD 的強型別操作,R 查詢用的是 LINQ,但又沒有 EF 那麼完整,比如追蹤的功能、產生DB,所以有人說他介於 Dapper 和 EF 之間。
linq2db 除了可以支援 LINQ,也可以像 Dapper 一樣用 Queery 、Execute,令我驚訝的是他的部分更新比 EF 更優雅,還支持 LINQPad,這不推真的不行啊
Dapper.Contrib 另外提供 CRUD 的擴充方法,針對 IDbConnection 型別進行擴充,他會根據 Model 定義自動幫我們渲染 SQL 語句,對於簡單的 CRUD 情境相當合用,從原本需要 Insert Command 以及 Parameter 的寫法,變成只需要 Insert(Model)
本以為這是一個很簡單的題目,但由於我是用 OWin,所以只要依賴 HttpContext.Current 就無法使用,花了一些時間整理出不透過 HttpContext.Current 上傳檔案的用法
原本一直在使用的 Swashbuckle 原來已經不更新,讓下載檔案的功能不正常,改用 Swagger-Net 就可以解決這個問題囉
以前曾經使用過Nuget V2 (NuGet.Core)來操作 nuget,因為需要所以改用 V3,這裡就紀錄使用方式
OAuth2 是目前大廠都有支援的一種授權機制, Swagger 也有支援,我將使用 Resource Owner Password / Implicit flow + Identity Framework 來進行演練。
前面幾篇寫了使用 Swagger 的方式,這篇記錄一下編寫文件的技巧以及支援 Client Code Gen 幾種方式
Swagger UI 上方有一個 api_key,這次我要利用他加上 JWT 來驗證
通常 API 都會經過保護, 當 API 需要授權才能使用時,Swagger 就需要做一些調整才能正常的調用,設定好 Basic Auth 就會有驗證對話視窗
來看看怎麼完成的吧