一般来说,Asp .NetCore 应用从官方默认的appsetting.json文件中读取就好,而且利用option模式中的 IOptionsSnapSot<T>、IOptionsMonitor<T>可以动态加载配置,你可以直接修稿json文件来保证。但是这样也有一定的不方便之处:你的配置放在单个json文件,加入你的为服务项目有10个,如果因为项目需求变了,要更改配置,就要到10个json文件中修改,而如果这10个项目的配置都在一个数据库中,那么只需一个脚本就能改好了。
不过要从数据库动态同步加载需要做一些额外的工作,本节就先介绍静态加载数据库配置。
目录
2.3 配置ConfigureAppConfiguration
1.搭建基本框架
由于这里不是重点,因此只是简单的介绍关键步骤,如果有不懂的具体可以看此.NET 6.0 - Connect to MySQL Database with Entity Framework Core,有详细讲解。
a. 创建asp .netcore 项目
可以创建webApi项目也可以创建MVC项目。由于使用的是MySql和EFcore,因为项目要添加下面三个包:
Pomelo.EntityFrameworkCore.MySql
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
b.创建实体类,数据文上下文类
实体类保存我们要的配置信息,参考json文件,我们保存为Key-Value模式:
public class ConfigurationEntity
{
[Key]
public string Key { get; set; }
public string Value { get; set; }
}
然后创建数据库上下文类:
public class ConfigurationDbContext:DbContext
{
public ConfigurationDbContext(DbContextOptions options):base(options) { }
public DbSet<ConfigurationEntity>? configurationEntities { get; set; }
}
c.添加数据库连接信息
一般情况我们可以将数据库的链接配置放到appsettings.json文件中,不过有时候我们不想让用户修改,可以放到机密文件中,机密文件(secret.json)也是asp框架下默认的读取文件之一,其加载顺序在appsettings.json之后,也就是如果你在两个json中都配置了ConnectionString,根据后来居上的法则,secret.json会生效。具体操作如下:
在解决方案资源管理器窗口,在你当前项目上右键,弹出菜单中选择“管理用户机密”

选择之后就会弹出secrets.json 编辑页面,和appsettings.json同样配置即可:

然后就可以将我们的数据库上下文类(DbContex)配置到服务中:
builder.Services.AddDbContext<ConfigurationDbContext>(opts =>
opts.UseMySql(ConnectionString, ServerVersion.AutoDetect(ConnectionString)));

本文介绍如何在ASP.NET Core项目中从数据库加载配置信息,包括创建项目、配置数据库连接、编写自定义配置源及配置加载流程。
最低0.47元/天 解锁文章
636

被折叠的 条评论
为什么被折叠?



