.net core下配置访问数据库操作
程序员文章站
2022-04-08 15:18:48
配置读取
.net core下读取配置还是有点麻烦的,本身没有system.configuration.dll,所以在进行配置前需要自行引用microsoft.exten...
配置读取
.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)] 该字段是否可被写入
上一篇: 交流后的一个发现
下一篇: 数据库副本的自动种子设定(自增长)
推荐阅读
-
在ASP.NET 2.0中操作数据之七十:配置数据库连接和命令等级设置
-
.NET Core Dapper操作mysql数据库的实现方法
-
.NET Core Dapper操作mysql数据库的实现方法
-
.NET Core 获取数据库上下文实例的方法和配置连接字符串
-
.Net Core API使用ODP.NET操作Oracle数据库
-
ASP.NET Core使用EF Core操作MySql数据库
-
ASP.NET Core使用功能开关控制路由访问操作(续)
-
ASP.NET Core使用功能开关控制路由访问操作
-
asp.net core系列 29 EF模型配置(查询类型,关系数据库建模)
-
Asp.Net Core下的两种路由配置方式