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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

dotnet core 数据库

發(fā)布時(shí)間:2024/4/17 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dotnet core 数据库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

dotnet core 數(shù)據(jù)庫

程序開發(fā)過程中,需要使用數(shù)據(jù)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),分析等。通常而言都會(huì)使用ORM來實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫與實(shí)體對(duì)象的轉(zhuǎn)化,過使用描述對(duì)象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫中。

ORM

ORM是實(shí)現(xiàn)持久化層的一種常用的方式,使得ORM中間件能在任何一個(gè)應(yīng)用的業(yè)務(wù)邏輯層和數(shù)據(jù)庫層之間充當(dāng)橋梁。常用的ORM有Dapper,EF,NPOCO等。選擇ORM我一般關(guān)注一下幾點(diǎn):

DapperEFNPOCO
簡單表映射YYY
侵入性NYN
LINQ訪問NYY
SQL語句YYY
多數(shù)據(jù)庫YYY
日志YNY
性能優(yōu)一般優(yōu)

通過一些簡單的比較,個(gè)人比較在意日志,LINQ使用,侵入性等性質(zhì),所以選擇NPOCO作為ORM工具。

安裝

這里使用MySQL數(shù)據(jù)庫存儲(chǔ),首先安裝對(duì)應(yīng)的依賴包,使用NuGet安裝如下包
NPoco 3.5.0
MySql.Data 7.0.7-m61
安裝完成后進(jìn)行相應(yīng)還原,為了方便的使用NPOCO中原有的數(shù)據(jù)操作并進(jìn)行一些擴(kuò)展,使用CachedDataAccess繼承NPOCO中的Database操作類,代碼如下:

public class CachedDataAccess : Database {}

配置

在appsettings.json文件中配置連接字符串示例如下:

{"ConnectionStrings": {"DefaultConnection": "server=127.0.0.1;userid=xxx;pwd=xxx;port=3306;database=demo;sslmode=none;Allow Zero Datetime=True;Convert Zero Datetime=True;"} }

在CachedDataAccess使用靜態(tài)構(gòu)造獲取對(duì)應(yīng)的連接字符串,并利用默認(rèn)的構(gòu)造函數(shù)初始換對(duì)應(yīng)的連接,這樣就可以使用默認(rèn)構(gòu)造來初始化使用數(shù)據(jù)庫。

public class CachedDataAccess : Database {protected static IConfigurationRoot Configuration { get; }protected static string connection { get; set; }private ILogger _logger = Log.Logger;static CachedDataAccess(){var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);Configuration = builder.Build();connection = Configuration.GetConnectionString("DefaultConnection");}public CachedDataAccess() : base(connection, DatabaseType.MySQL, MySql.Data.MySqlClient.MySqlClientFactory.Instance){} }

操作

使用NPOCO的常用的數(shù)據(jù)庫操作及使用

事務(wù)

using (var db = new CachedDataAccess()) {db.BeginTransaction();//Your CRUD operation heredb.CompleteTransaction(); }

增加

public class MIKO_ACCOUNT { public int ID { get;set; }public string ACCOUNT { get;set; }; }using (var cda = new CachedDataAccess()) {var item = new MIKO_ACCOUNT();item.ACCOUNT = "demo";cda.BeginTransaction();cda.Insert(item);cda.CompleteTransaction(); }

刪除

using (var cda = new CachedDataAccess()) {cda.BeginTransaction();cda.Delete<MIKO_ACCOUNT>(p=>p.ACCOUNT == "demo");cda.CompleteTransaction(); }

查詢

using (var cda = new CachedDataAccess()) {cda.BeginTransaction();var items = cda.Query<MIKO_ACCOUNT>().Where(p=>p.ACCOUNT == "demo");cda.CompleteTransaction(); }

修改

using (var cda = new CachedDataAccess()) {cda.BeginTransaction();var user = cda.Query<MIKO_ACCOUNT>().Where(p=>p.ACCOUNT == "demo").FirstOrDefault();user.ACCOUNT = "new@domain.com";db.Update(user);cda.CompleteTransaction(); }

日志

日志記錄對(duì)跟蹤錯(cuò)誤及統(tǒng)計(jì)有很重要的意義,NPOCO中可以采用手工重寫OnExecutingCommand,OnException方法來實(shí)現(xiàn)日志的記錄。簡單的實(shí)現(xiàn)代碼如下,其中

private ILogger _logger = Log.Logger;protected override void OnExecutingCommand(DbCommand cmd) {this._logger.Information(FormatCommand(cmd)); }protected override void OnException(Exception exception) {this._logger.Error(exception.Message); }

我們執(zhí)行一個(gè)上面的查詢語句,在日志中可以看到對(duì)應(yīng)的查詢記錄如下

2017-06-24 19:55:48.589 +08:00 [Information] SELECT `M`.`ID` as `ID`, `M`.`ACCOUNT` as `ACCOUNT`, FROM `MIKO_ACCOUNT` `M` WHERE (`M`.`ACCOUNT` = @0)-> @0 [String] = "demo"

轉(zhuǎn)載于:https://www.cnblogs.com/SLchuck/p/7082590.html

總結(jié)

以上是生活随笔為你收集整理的dotnet core 数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。