国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .net core下配置訪問數據庫操作

.net core下配置訪問數據庫操作

2020-05-25 13:45Bug生活2048 ASP.NET教程

本篇文章給大家詳細分享了在.net core下配置訪問數據庫的相關操作過程以及代碼實現過程,有興趣的朋友參考下。

配置讀取

.net core下讀取配置還是有點麻煩的,本身沒有System.Configuration.dll,所以在進行配置前需要自行引用Microsoft.Extensions.Configuration,截圖如下:

.net core下配置訪問數據庫操作

這樣的話我們就可以配置讀取的相關編碼了,比如我們數據庫的鏈接字符串,在appsettings.json添加對應的數據庫配置:

?
1
2
3
"ConnectionStrings": {
"TestDb": "server=localhost;port=3306;database=mytest;user=test;password=123456;charset=utf8;"
}

讀取配置相關代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class AppSetting
{
 private static readonly object objLock = new object();
 private static AppSetting instance = null;
 
 private IConfigurationRoot Config { get; }
 
 private AppSetting()
 {
 var builder = new ConfigurationBuilder()
  .SetBasePath(Directory.GetCurrentDirectory())
  .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
 Config = builder.Build();
 }
 
 public static AppSetting GetInstance()
 {
 if (instance == null)
 {
  lock (objLock)
  {
  if (instance == null)
  {
   instance = new AppSetting();
  }
  }
 }
 
 return instance;
 }
 
 public static string GetConfig(string name)
 {
 return GetInstance().Config.GetSection(name).Value;
 }
}

這樣就可以直接讀取對應的配置信息啦:

?
1
string CONNECTION_STRING = AppSetting.GetConfig("ConnectionStrings:TestDb");

數據庫操作

數據庫相關操作還是建議使用Dapper以及Dapper.Contrib,比較輕量,也比較方便。

Dapper相信大家還是比較熟悉的,這里簡單說下Dapper.Contrib,基于Dapper的擴展方法,封裝了如下方法:

  • T Get<T>(id);
  • IEnumerable<T> GetAll<T>();
  • int Insert<T>(T obj);
  • int Insert<T>(Enumerable<T> list);
  • bool Update<T>(T obj);
  • bool Update<T>(Enumerable<T> list);
  • bool Delete<T>(T obj);
  • bool Delete<T>(Enumerable<T> list);
  • bool DeleteAll<T>();

這樣對應你應用的簡單的CRUD方法可以很輕松的搞定的。比如下面幾個例子:

?
1
2
3
4
5
6
//根據主鍵Id查詢
using (var conn = DatabaseManager.GetConnection(DatabaseManager.DBName))
{
 await conn.OpenAsync();
 return await conn.GetAsync<UserModel>(id);
}

新增數據:

?
1
2
3
4
5
6
//新增
using (var conn = DatabaseManager.GetConnection(DatabaseManager.DBName))
{
 await conn.OpenAsync();
 await conn.InsertAsync(entity);
}

修改數據:

?
1
2
3
4
5
6
//修改
using (var conn = DatabaseManager.GetConnection(DatabaseManager.DBName))
{
 await conn.OpenAsync();
 await conn.UpdateAsync(entity);
}

需要注意的是,需要給對應的實體加上特性:

?
1
2
3
4
5
6
7
8
[Table("User")]
public class UserModel
{
 [Key]
 public int Id { get; set; }
 public string UserName { get; set; }
 public string Remark { get; set; }
}
  • [Table("Tablename")] 標識對應的表名
  • [Key] 對應的主鍵
  • [ExplicitKey] 如果主鍵不是自增長的,用此標識
  • [Write(true/false)] 該字段是否可被寫入

原文鏈接:https://segmentfault.com/a/1190000014051679

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品一区欧美 | 自拍视频一区 | 亚洲视频一区二区在线观看 | 日韩成人免费av | 日本精a在线观看 | 亚洲精品日韩激情在线电影 | 久久亚洲精品视频 | 四虎在线观看 | 亚洲午夜精品视频 | 国产精品久久久久久久久久免费 | 欧美一级二级三级视频 | 欧美 国产精品 | 亚洲一区免费在线观看 | 久久这里只有精品8 | 欧美日韩久久精品 | 国产精品一二区 | 国产精品永久免费视频 | 欧美区 日韩区 | 欧美日韩一区二区三区在线观看 | 久久久91精品国产一区二区三区 | 中文字幕不卡 | 欧美激情一区二区三级高清视频 | 91九色视频国产 | 色av成人| 中文字幕69av | 91毛片视频 | 久久久久a | 一二三区字幕免费观看av | 色综合一区二区 | 国产精品美乳一区二区免费 | 国产成人av在线播放 | 免费裸体无遮挡黄网站免费看 | 亚洲第一成人在线视频 | 免费在线观看一区二区 | 国产精品第一国产精品 | 黄色精品网站 | 在线看国产 | 欧美一区二区免费在线 | 色嫩紧中文字幕在线 | 91精品视频在线 | 91午夜视频 |