当前位置: 移动技术网 > IT编程>开发语言>.net > .net core下配置访问数据库操作

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

2018年04月10日  | 移动技术网IT编程  | 我要评论

肿瘤康复,算八字的网站,水珍珠菜

配置读取

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

这样的话我们就可以配置读取的相关编码了,比如我们数据库的链接字符串,在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)] 该字段是否可被写入

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网