之前老大說要改變代碼中充斥着各種Select的Sql語句字符串的情況,讓我嘗試着做一個簡單的SqlHelper,要具有以下功能:
1.不要在業務代碼中暴露DataTable或者DataSet類型;
2.可以完成Select操作,需要支持條件查詢,分頁,單條記錄查詢,排序,連表,單個值;
3.可以完成添加單條記錄,添加多條記錄,修改記錄和刪除記錄;
4.使用過程中要兼容老代碼,既允許直接傳入Sql;
5.要同時兼容MySql和Sql Server。
我之前寫過很多Linq的代碼,對那種函數式編程很是喜歡,所以考慮可否按照Lambda表達式來生成Sql。對於這部分的內容有很多,所以我單開一個系列來分享一下我的解決方案:
解決方案的結構如下:
傳送門:
SqlHelper簡單實現(通過Expression和反射)1.引言
SqlHelper簡單實現(通過Expression和反射)2.特性和實體設計
SqlHelper簡單實現(通過Expression和反射)3.實體,數據傳輸對象(DTO)Helper類設計
SqlHelper簡單實現(通過Expression和反射)4.對象反射Helper類
SqlHelper簡單實現(通過Expression和反射)5.Lambda表達式解析類
SqlHelper簡單實現(通過Expression和反射)6.Providor模式(工廠+策略)可配置數據庫選擇
SqlHelper簡單實現(通過Expression和反射)7.MySql數據處理類
SqlHelper簡單實現(通過Expression和反射)8.Sql Server數據處理類