欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net core下配置访问数据库操作

程序员文章站 2022-09-09 08:44:14
配置读取 .net core下读取配置还是有点麻烦的,本身没有system.configuration.dll,所以在进行配置前需要自行引用microsoft.exten...

配置读取

.net core下读取配置还是有点麻烦的,本身没有system.configuration.dll,所以在进行配置前需要自行引用microsoft.extensions.configuration,截图如下:

.net core下配置访问数据库操作

这样的话我们就可以配置读取的相关编码了,比如我们数据库的链接字符串,在appsettings.json添加对应的数据库配置:

 "connectionstrings": {
 "testdb": "server=localhost;port=3306;database=mytest;user=test;password=123456;charset=utf8;"
 }

读取配置相关代码如下:

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

这样就可以直接读取对应的配置信息啦:

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方法可以很轻松的搞定的。比如下面几个例子:

//根据主键id查询
using (var conn = databasemanager.getconnection(databasemanager.dbname))
{
 await conn.openasync();
 return await conn.getasync<usermodel>(id);
}

新增数据:

//新增
using (var conn = databasemanager.getconnection(databasemanager.dbname))
{
 await conn.openasync();
 await conn.insertasync(entity);
}

修改数据:

//修改
using (var conn = databasemanager.getconnection(databasemanager.dbname))
{
 await conn.openasync();
 await conn.updateasync(entity);
}

需要注意的是,需要给对应的实体加上特性:

[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)] 该字段是否可被写入