2015-12-05

[ASP.NET] 使用 Dapper 將 SQL 查詢結果自動對應到自訂義類別

相信很多文章或書籍都強調要將 SQL 查詢結果轉成強型別(EX:Entity Framework、自訂義 Class 類別),而不要再用弱型別了(EX:DataSet、DataTable)。

Entity Framework 是普遍最推薦的,但是如果遇到要跨 DB 的查詢就麻煩了,這時相信很多人還是習慣自己組 SQL 比較快,然後再用反射將結果轉到自訂義的類號,只是當結果是超多欄位時,反射的效能就會慢了點。

自己也是因為遇到這問題,才開始尋找更好的方法,最後找到黑暗大大的 Dapper 文章,反射效能馬上解決! 

簡單說明使用方式:

Step 1:一樣要自行建立類別,Property 欄位名稱大小寫要跟 SQL 查詢結果欄位名稱一樣,Dapper 才能自行對應成功。



Step 2:引用 Dapper 物件後,Connection 物件會多出 .Query<object> method,其中的 object 就是自訂義類別,Connection 查詢後就會自行將結果對應到這個類別裡了。

自己寫了一個查詢物件 DB_ControllerByDapper 供參考:


使用 DB_ControllerByDapper 的範例如下:

DB_ControllerByDapper db = 
   new DB_ControllerByDapper(DB_ControllerByDapper.DB_ConnectionString.HRConnectionString);
// ...略...
IEnumerable<SystemAuth> result = db.SelectByDapper(strSQL);


2017/2/19更新:
將 Class DB_ControllerByDapper 改成 Class DBLibByDapper<TEntity>,並跟 DBLib 整合在一起。


參考來源:黑暗執行緒

沒有留言:

張貼留言