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

歡迎訪問 生活随笔!

生活随笔

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

数据库

dotnet core 数据库

發布時間:2024/4/17 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dotnet core 数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

dotnet core 數據庫

程序開發過程中,需要使用數據對數據進行存儲,分析等。通常而言都會使用ORM來實現關系數據庫與實體對象的轉化,過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。

ORM

ORM是實現持久化層的一種常用的方式,使得ORM中間件能在任何一個應用的業務邏輯層和數據庫層之間充當橋梁。常用的ORM有Dapper,EF,NPOCO等。選擇ORM我一般關注一下幾點:

DapperEFNPOCO
簡單表映射YYY
侵入性NYN
LINQ訪問NYY
SQL語句YYY
多數據庫YYY
日志YNY
性能一般

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

安裝

這里使用MySQL數據庫存儲,首先安裝對應的依賴包,使用NuGet安裝如下包
NPoco 3.5.0
MySql.Data 7.0.7-m61
安裝完成后進行相應還原,為了方便的使用NPOCO中原有的數據操作并進行一些擴展,使用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使用靜態構造獲取對應的連接字符串,并利用默認的構造函數初始換對應的連接,這樣就可以使用默認構造來初始化使用數據庫。

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的常用的數據庫操作及使用

事務

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(); }

日志

日志記錄對跟蹤錯誤及統計有很重要的意義,NPOCO中可以采用手工重寫OnExecutingCommand,OnException方法來實現日志的記錄。簡單的實現代碼如下,其中

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); }

我們執行一個上面的查詢語句,在日志中可以看到對應的查詢記錄如下

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"

轉載于:https://www.cnblogs.com/SLchuck/p/7082590.html

總結

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

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