2015年10月26日 星期一

Dapper - 使用 LINQPad 快速產生相對映 SQL Command 查詢結果的類別

前面幾篇文章都是一直在介紹 Dapper 的相關功能,不過都是屬於基本的應用,Dapper 也是有很多的進階使用方式,不過這邊就不繼續介紹而是讓各位去發掘與找出適合自己專案的做法,這一篇文章基本上跟 Dapper 沒有直接關係,因為產出對映查詢結果類別的這一個功能並非使用 Dapper,因為 Dapper 只是一個優化 ADO.NET 操作 T-SQL 以及對映類別的一個 Utilities,本身並沒有提供什麼神奇的功能,但是很多人從傳統 ADO.NET 操作並且使用 DataSet DataTable 弱型別的方式改為使用 Dapper 以及強型別的時候,普遍都會遇到一個最大的困難…… 「建立類別」。

這一篇文章的內容算是拾人牙慧,只是跟大家說別人有提供了方法可以讓我們能夠快速地從 SQL Command 去建立相對映的類別,雖然不是我寫的方法,但還是希望大家可以及早地從弱型別的地獄中快點逃離出來(雖然這麼說是有貶抑弱型別的意味,但看了這麼多年以及很多人所開發的專案,發現到很多問題都是從濫用 DataSet DataTable 等弱型別開始)。

 


2015年9月30日 星期三

ASP.NET MVC 的 Model 使用 Dapper

接連三篇有關 Dapper 的文章,都是使用 LINQPad 向各位說明,對於有些開發者來說可能無法馬上可以體會,因為沒有一個明確或是簡單的應用範例,所以感覺就會有點在空談,所以這一篇就用一個簡單的 ASP.NET MVC 網站範例來做介紹,之前曾經在 twMVC #10 裡有分享過「ASP.NET MVC Model 的設計與使用」這個主題,然後又在部落格裡寫了以「ASP.NET MVC 的 Model 使用 ADO.NET」為題的五篇系列文,這一篇的範例文章就以那五篇系列文最後所完成的簡單範例做修改,在方案裡添加使用 Dapper 的 Repository 專案,並且讓 ASP.NET MVC 與 WebForm 網站都可以直接使用。

 


2015年9月29日 星期二

Dapper 練習題 - 每個查詢的結果都要定義並對映一個類別嗎?(使用 dynamic)

關於定義類別這件事,尤其是裝載資料的 Model 類別,在開發的過程中算是稀鬆平常的事情,但如果你的開發是習慣使用弱型別並且從頭到尾(從資料庫取得一直到資料顯示在頁面上)都使用弱型別,那麼建立 Model 類別的次數就會相對地比較少,因為會用到的情況比較少,但如果你已經試著在專案裡使用 Dapper 開發或是早已經使用 ADO.NET + T-SQL 然後自行處理資料對映到類別的操作,那一定會遇到一種情況會讓人相當猶豫不決,那就是查詢所取得的欄位數量不多時,實在是不想再去建立一個新的類別(因為建立的類別已經一堆了,再新建下去就搞不清楚了)。

Dapper 有提供查詢結果對映到 dynamic 型別,上述所遇到的狀況就能提供方便的處理,如此一來就不必每個查詢都需要建立一個新的類別,減少管理及維護上的困擾。

 


2015年9月28日 星期一

Dapper 練習題 - 新增多筆或大量資料

前一篇已經向大家介紹了 Dapper 這一個資料存取套件,可以作為解決專案仍須使用一般 T-SQL 操作但是又不想直接處理弱型別的情境,尤其是在比較強調使用「強型別」的 ASP.NET MVC / Web API 專案裡,可以不必硬著頭皮使用 Entity Framework(因為許多企業的系統環境不允許),而且也可以兼顧既有的商業邏輯包袱(都已經說是包袱了,還是希望可以早點解下並丟開)。

其實 Dapper 並不需要太多的介紹與教學,其實對於既有 ADO.NET + T-SQL 已經相當熟悉的開發者應該可以短時間上手,我所看到最多的問題應該會是在「物件導向」的觀念與使用,畢竟之前使用 ADO.NET + T-SQL 的操作處理都是直接使用弱型別,從取得資料一直到資料的顯示輸出,甚至資料的輸入,都沒有什麼機會用到所謂的物件導向,另外要特別強調的就是,不是在專案裡建立了好多個 class 然後使用類別在程式裡傳來傳去就可以叫做物件導向,例如你在一個類別的建構式裡塞了成千上百的程式然後又直接跟資料庫串接並且又有商業邏輯的處理,這完全不是物件導向,還是依然是在程序導向的開發。

嗯…… 這一篇所要講的跟上面所講的沒什麼關係(只是單純地抒發想法),Dapper 對於一次新增多筆資料的做法是相當簡單的,這篇也跟大家介紹如何處理一次新增多筆且大量的資料新增。

 


2015年9月21日 星期一

另一種資料存取對映處理方式的選擇 - 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 所開發的專案都可以使用(一定要先這麼說,不然一定很多人會有所誤解,這是寫部落格文章四年多來,接到無數回應、詢問所得到的心得。)

 


提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。