上一篇「NanoProfiler 對於資料庫存取的監控 - ADO.NET」的最後有講到使用 ADO.NET 進行資料存取處理雖然可以使用 NanoProfiler 將程式的執行效能作監控,但是卻無法將執行的 T-SQL 內容給記錄起來,所以算是一個未完成品。
現在這一篇則是改用 Dapper 取代 ADO.NET 的操作,然後再使用 NanoProfiler.Data 去進行資料存取的監控並且將執行的 T-SQL 給記錄起來。
上一篇「NanoProfiler 對於資料庫存取的監控 - ADO.NET」的最後有講到使用 ADO.NET 進行資料存取處理雖然可以使用 NanoProfiler 將程式的執行效能作監控,但是卻無法將執行的 T-SQL 內容給記錄起來,所以算是一個未完成品。
現在這一篇則是改用 Dapper 取代 ADO.NET 的操作,然後再使用 NanoProfiler.Data 去進行資料存取的監控並且將執行的 T-SQL 給記錄起來。
這一篇文章的內容算是拾人牙慧,只是跟大家說別人有提供了方法可以讓我們能夠快速地從 SQL Command 去建立相對映的類別,雖然不是我寫的方法,但還是希望大家可以及早地從弱型別的地獄中快點逃離出來(雖然這麼說是有貶抑弱型別的意味,但看了這麼多年以及很多人所開發的專案,發現到很多問題都是從濫用 DataSet DataTable 等弱型別開始)。
接連三篇有關 Dapper 的文章,都是使用 LINQPad 向各位說明,對於有些開發者來說可能無法馬上可以體會,因為沒有一個明確或是簡單的應用範例,所以感覺就會有點在空談,所以這一篇就用一個簡單的 ASP.NET MVC 網站範例來做介紹,之前曾經在 twMVC #10 裡有分享過「ASP.NET MVC Model 的設計與使用」這個主題,然後又在部落格裡寫了以「ASP.NET MVC 的 Model 使用 ADO.NET」為題的五篇系列文,這一篇的範例文章就以那五篇系列文最後所完成的簡單範例做修改,在方案裡添加使用 Dapper 的 Repository 專案,並且讓 ASP.NET MVC 與 WebForm 網站都可以直接使用。
關於定義類別這件事,尤其是裝載資料的 Model 類別,在開發的過程中算是稀鬆平常的事情,但如果你的開發是習慣使用弱型別並且從頭到尾(從資料庫取得一直到資料顯示在頁面上)都使用弱型別,那麼建立 Model 類別的次數就會相對地比較少,因為會用到的情況比較少,但如果你已經試著在專案裡使用 Dapper 開發或是早已經使用 ADO.NET + T-SQL 然後自行處理資料對映到類別的操作,那一定會遇到一種情況會讓人相當猶豫不決,那就是查詢所取得的欄位數量不多時,實在是不想再去建立一個新的類別(因為建立的類別已經一堆了,再新建下去就搞不清楚了)。
Dapper 有提供查詢結果對映到 dynamic 型別,上述所遇到的狀況就能提供方便的處理,如此一來就不必每個查詢都需要建立一個新的類別,減少管理及維護上的困擾。
前一篇已經向大家介紹了 Dapper 這一個資料存取套件,可以作為解決專案仍須使用一般 T-SQL 操作但是又不想直接處理弱型別的情境,尤其是在比較強調使用「強型別」的 ASP.NET MVC / Web API 專案裡,可以不必硬著頭皮使用 Entity Framework(因為許多企業的系統環境不允許),而且也可以兼顧既有的商業邏輯包袱(都已經說是包袱了,還是希望可以早點解下並丟開)。
Dapper 對於一次新增多筆資料的做法是相當簡單的,這篇也跟大家介紹如何處理一次新增多筆且大量的資料新增。
這一篇文章的內容是依據我在公司裡所分享的主題「ASP.NET.MVC / Web API 另一種存取方式」再加以整理。接觸 Dapper 這個資料存取套件是有一段時間,但一直都沒有機會使用上,因為之後所做的專案多半都是使用 Entity Framework,而在去年要開始做新專案的時候,因為系統環境以及舊有包袱的緣故,於是我就想起了 Dapper,也的確解決了許多原有的問題並且大來很大的效益。
這一篇介紹 Dapper 並不會有特別深入的使用介紹,大概只能算是入門介紹,最主要的目的是要讓大家能夠知道在現有環境無法使用 ORM 的情況,尤其又是開發 ASP.NET MVC / Web API 的專案,除了 Entity Framework 之外能夠有其他的替代方案。
注意,並不是說 ASP.NET MVC / Web API 才能夠使用 Dapper,任何你之前使用 ADO.NET + T-SQL 所開發的專案都可以使用(一定要先這麼說,不然一定很多人會有所誤解,這是寫部落格文章四年多來,接到無數回應、詢問所得到的心得。)