ASP.NET Core 5如何读取appsettings值并拼接Entity Framework返回实体字段
实现方案
步骤1:创建配置映射类
首先定义和appsettings节点对应的配置类,用于绑定配置值:
public class AppSettings { public string VirtualPath { get; set; } }
步骤2:注册配置到依赖注入容器
在ASP.NET Core 5的Startup.cs文件的ConfigureServices方法中,添加配置绑定注册:
public void ConfigureServices(IServiceCollection services) { // 其他原有注册代码... services.Configure<AppSettings>(Configuration.GetSection("AppSettings")); }
注意:确保你的appsettings.json配置节点格式正确,修正后的格式如下:
"AppSettings": { "virtualpath": "//google.com/photos/" }
步骤3:注入配置到仓储类
修改NoticiaRepository的构造函数,注入配置实例:
public class NoticiaRepository { private readonly YourDbContext _context; private readonly AppSettings _appSettings; // 构造函数注入IOptions<AppSettings> public NoticiaRepository(YourDbContext context, IOptions<AppSettings> appSettings) { _context = context; _appSettings = appSettings.Value; } // 原有其他代码... }
替换代码中的YourDbContext为你实际的上下文类名
步骤4:修改查询方法实现路径拼接
调整GetNoticiacastList方法,在查询到内存结果后遍历拼接完整路径:
public async Task<IEnumerable<Noticia>> GetNoticiacastList() { var listadoNoticia = await _context.Noticia.ToListAsync(); foreach (var noticia in listadoNoticia) { // 自动处理前后斜杠重复的问题,避免路径错误 noticia.FullPath = $"{_appSettings.VirtualPath.TrimEnd('/')}/{noticia.Imagen?.TrimStart('/')}"; // 如果需要处理Imagen为空的场景,可以自行补充判断逻辑赋值默认路径 } return listadoNoticia; }
内容的提问来源于stack exchange,提问作者Daniel Lazarte
相关产品推荐
相关产品推荐

