標籤:通過 插入資料 ogr 資料類型 迴圈 lin 覆蓋 tran rom
一、摘要
1.1、為什麼叫本次的分享課叫《修鍊手冊》?
阿笨希望本次的分享課中涉及覆蓋的一些小技巧、小技能給您帶來一些協助。希望您在日後工作中把它作為一本實際技能手冊進行儲備,以備不時之需,一旦當手頭遇到與Dapper修鍊手冊中相似用法的地方和情境,可以直接拿來進行翻閱並靈活的運用到項目中。最後阿笨建議您可以根據自己在工作中碰到的不同的使用情境,不斷的完善此本修鍊手冊。
廢話不多說,直接上乾貨,我們不生產乾貨,我們只是乾貨的搬運工。
四、涉及覆蓋的知識點
1、C# Linq To Xml技術。
2、Transact-SQL修鍊手冊。比如如何使用暫存資料表、建立使用者自訂表格(TABLE)、XML資料欄位、ROW_NUMBER分頁函數、預存程序修鍊手冊(動態執行SQL、異常處理機制、交易處理機制)、C#如何擷取預存程序的OUTPUT、RETURN參數值。
3、SQL Sever FOR XML技術(XML PATH、XML RAW、XML AUTO簡單用法介紹)。
4、Transact-SQL關鍵字OPENXML操作記憶體中的 XML 文檔。
5、Faker.Net仿照測試資料架構運用。
6、VS單元測試NuitTest運用。
7、Dapper在非同步編程(Asyn Task)中的運用。
8、原生Dapper簡單的CRUD(增刪改查) 修鍊手冊。(強烈推薦)
9、Dapper如何通過DynamicParameters動態拼接查詢SQL修鍊手冊。(強烈推薦)
10、Dapper擴充庫Dapper.SqlBuilder、UniqueNamespace.SqlBuilder修鍊手冊。(強烈推薦)
11、原生Dapper進階技巧修鍊手冊。(強烈推薦)
12、Dapper擴充庫Dapper-Extensions修鍊手冊。(強烈推薦)
五、Dapper修鍊手冊線上學習和示範
5.1、原生Dapper簡單的CRUD(增刪改查) 修鍊手冊
Insert、Insert_Batch(批量插入資料)。
Update、Delete、Exist。
GetById、GetList、GetByIds(in子句使用)。
GetListReturnDynamic(返回dynamic)。
GetListByMultiQuery(返回多結果集Tuple)。
ExecuteWithDBTransaction(本地DbTransaction事務操作)。
ExecuteWithTransactionScope(分布式TransactionScope事務操作)。
5.2、Dapper如何通過DynamicParameters動態拼接查詢SQL修鍊手冊
Insert、GetListByGenreIdAndName領略DynamicParameters的風采。
SearchOrdersByPageDynamicParametersSqlBuild:擷取分頁資料(通過DynamicParameters動態拼接查詢SQL方式拼接+ ROW_NUMBER() OVER 子句分頁)。
SearchOrdersByDynamicParametersOutPutANDReturnVaule:如何使用DynamicParameters構造和擷取預存程序OUTPUT、RETURN參數值,以及擷取預存程序返回一個或多個結果集。
5.3、Dapper擴充庫Dapper.SqlBuilder修鍊手冊
通過SqlBuilder構造CRUD語句模板。
通過SqlBuilder內建的模板構造SELECT(查詢)、Page(分頁)語句模板。
GetOrderOneToManyByDapperSqlBuilder:擷取訂單"一對多"通過SQL文法 XML PATH子句。
SearchOrdersByPageDapperSqlBuilder:擷取分頁資料(通過Dapper.SqlBuilder拼接+ ROW_NUMBER() OVER 子句分頁)。
SearchOrdersByDapperDapperSqlBuilderSqlPagingTemplates擷取分頁資料(通過Dapper.SqlBuilder內建提供的分頁模板進行分頁)。
5.4、原生Dapper進階技巧修鍊手冊
CreateOrder:建立訂單(採用sql拼接+for迴圈方式)。
CreateOrderByStoredProcedures_XMLPath:建立訂單(採用產生XML+SQL XML資料類型的XMLPath方式)。
CreateOrderByStoredProcedures_OpenXml:建立訂單(採用產生XML+SQL XML資料類型的OpenXml方式)。
CreateOrderByStoredProcedures_CustomTableType:建立訂單(採用SQL使用者建立自訂表格類型)。
GetOrderOneToManyBySqlBuilder:擷取訂單(一對多)通過主從表SQL語句方式。
GetOrderOneToManyByDapperQuery:擷取訂單(一對多)通過原生Dapper Query+splitOn關鍵字。
SearchOrdersByPageSqlBuild:擷取分頁資料(通過SQL語句拼接+ ROW_NUMBER() OVER 子句分頁)。
SearchOrdersByPageSqlStoredProcedures:擷取分頁資料(通過SQL分頁預存程序+ ROW_NUMBER() OVER 子句分頁)。
5.5、Dapper擴充庫Dapper-Extensions修鍊手冊
1、Insert、Insert_Batch(批量插入資料)。
2、Update、Delete、Exist。
3、Insert_BatchBySqlBulkCopy(基於SqlBulkCopy方法進行批量插入資料)。
4、GetList:包含如下知識點:
*根據條件進行查詢(帶過濾條件和排序欄位)。
*根據多組合條件進行查詢(通過IPredicate的Predicates.Group()產生過濾條件+排序欄位)。
*根據多組合條件進行查詢(通過IPredicate.Add()產生過濾條件+排序欄位)。
*根據多組合條件進行查詢(通過Predicate多條件複合謂片語合產生過濾條件+排序欄位,樣本SQL語句:Select * From Table Where([email protected] AND [email protected]) OR ([email protected] AND [email protected])。
*根據單條件進行子查詢查詢(通過IPredicate.EXISTS()子查詢過濾條件陳述式+排序欄位,樣本語句:Select * Form Table Where Exists(Select 1 From Table Where [email protected]))。
*根據多組合條件進行子查詢查詢(通過IPredicate.EXISTS()子查詢過濾條件陳述式+排序欄位,樣本語句:Select * From Table Where Exists(Select Count(1) From Table Where([email protected] AND [email protected]) OR ([email protected] AND [email protected])))。
*SearchOrdersByPageDapperExtensions:擷取分頁資料(通過提供的擴充DapperExtensions多條件組合複合謂詞IPredicate+內建的Count、Page函數)。
六、小結
在ADO.NET的世界裡“海闊憑魚躍,天高任鳥飛”。
Transact-SQL編程能力再上一個台階。
領略到了Dapper她的“美”!
學完此本修鍊手冊後,您將會汲取到滿滿的乾貨,讓您更加的有底氣!
後續計劃:阿笨將後續計劃給大家帶來另外一堂分享課《.NET輕量級ORM組件Dapper實戰寶典》,大概包含Dapper For MSQL,Dapper For Mysql、Dapper For Oracle、資料訪問層之Repository模式以及基於Dapper開源的倉儲模式項目運用,等等。
.NET輕量級ORM組件Dapper修鍊手冊