日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

EFCore之SQL扩展组件BeetleX.EFCore.Extension

發(fā)布時間:2023/12/4 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EFCore之SQL扩展组件BeetleX.EFCore.Extension 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

??????? EFCore是.NETCore團隊開發(fā)的一個ORM組件,但這個組件在執(zhí)行傳統(tǒng)SQL的時候并不方便,因此BeetleX.EFCore.Extension的設計目的是讓EFCore執(zhí)行傳統(tǒng)SQL更簡單方便。

引用

????????在使用組件之前需要引用它,可以通過以下地址獲取最新版本

https://www.nuget.org/packages/BeetleX.EFCore.Extension/

使用

????????引用組件后就可以使用,組件的操作操作都是針對EFCore的DBContext對象來進行數(shù)據(jù)庫操作。

SQL sql = "select * from employees"; var employees = sql.List<Employee, NorthwindContext>();

組件提供SQL對象用來操作傳統(tǒng)的SQL語句,以上代碼是在NorthwindContext數(shù)據(jù)庫上執(zhí)行查詢語句并返回相關信息列表。

sql = "select * from customers where country=@country"; sql += ("@country", "UK"); var customers = sql.List<Customer, NorthwindContext>();

以上是針對參數(shù)化的SQL處理,在操作上DBContext可以通過泛參傳入或通過實例以變量的參數(shù)傳入,通過泛參傳入的好處是不用實例化DBContext。

批量更新

????????在EFCore更新某個條件的字段信息操作起來比較麻煩,所以組件也擴展出相關方法來解決。

var cmd = db.Customers.Update(c => c.Region == "uk").Where(c => c.Country == "UK").Execute();

以上操作是把國家是UK的所有記錄Region改成uk

批量刪除

????????同樣EFCore在批條件刪除上也不怎么方便,組件同樣也在DBSet的基礎上擴展了Delete批刪除方法.

using (NorthwindContext db = new NorthwindContext()) {var?cmd?=?db.Customers.Delete(c?=>?c.Country?==?"UK"); }

以上是刪除國家是UK的所有記錄.

Select對象

??????? Select對象是針對單個表的個性查詢需求制定的,它可以定義查詢不同的定段和條件來返回到指定的對象中。

class CustomerName {public?string?CustomerID?{?get;?set;?}public string CompanyName { get; set; } } [Fact]Select<Customer>?select?=?new?Select<Customer>("CustomerID",?"CompanyName"); select?&=?c?=>?c.Country?==?"UK"; var?items?=?select.List<CustomerName,?NorthwindContext>();

以上是針對客戶信息查詢一些字段并返回到其他結構的對象列表中。

轉議執(zhí)行

????????組件封了一些返回類型,通過類型的自動轉換實現(xiàn)SQL自動執(zhí)行功能。通過轉議執(zhí)行可以更方便地執(zhí)行一些單一性的SQL處理。

using (NorthwindContext db = new NorthwindContext()) {DBValueList<string> values = (db, "select customerid from customers");DBObjectList<CustomerName> items = (db, "select CustomerID,CompanyName from customers");DBExecute<string> id = (db, "select CompanyName from customers where CustomerID='ALFKI'");DBExecute execute = (db, "delete from customers", " delete from orders"); }

執(zhí)行鏈跟蹤

????????在新版中添加了執(zhí)行跟蹤鏈,可以進一步查看組件執(zhí)行SQL的情況。

using (CodeTrackFactory.TrackReport("AutoExecute", CodeTrackLevel.Bussiness, null, "EFCore", "BeetleX")) {using (NorthwindContext db = new NorthwindContext()){DBValueList<string> values = (db, "select customerid from customers");DBObjectList<CustomerName> items = (db, "select CustomerID,CompanyName from customers");DBExecute<string> id = (db, "select CompanyName from customers where CustomerID='ALFKI'");var item = db.Customers.Where(c => c.CustomerID == "AROUT").FirstOrDefault();item.Region = "GuangZhou";db.SaveChanges();} } Console.WriteLine(CodeTrackFactory.Activity?.GetReport());

【BeetleX通訊框架代碼詳解】 【WebApi示例擴展】 BeetleX

開源跨平臺通訊框架(支持TLS)
輕松實現(xiàn)高性能:tcp、http、websocket、redis、rpc和網關等服務應用

https://beetlex.io

如果你想了解某方面的知識或文章可以把想法發(fā)送到

henryfan@msn.com|admin@beetlex.io

總結

以上是生活随笔為你收集整理的EFCore之SQL扩展组件BeetleX.EFCore.Extension的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。