using LMS.Repository.DB; using Microsoft.EntityFrameworkCore; namespace LMS.DAO.OptionDAO { public class OptionGlobalDAO(ApplicationDbContext dbContext) { private readonly ApplicationDbContext _dbContext = dbContext; /// /// 根据配置键查找并返回指定类型的配置值 /// /// 返回值类型 /// 配置键 /// 配置值,如果不存在或转换失败则返回默认值 public async Task FindAndReturnOption(string optionKey) { // 参数验证 if (string.IsNullOrWhiteSpace(optionKey)) { return default(T); } var options = await _dbContext.Options .Where(x => x.Key == optionKey) .FirstOrDefaultAsync(); if (options == null) return default; // 直接返回转换结果,GetValueObject内部应该处理null情况 return options.GetValueObject() ?? default; } /// /// 检查配置是否存在 /// /// 配置键 /// 是否存在 public async Task OptionExists(string optionKey) { if (string.IsNullOrWhiteSpace(optionKey)) { return false; } return await _dbContext.Options .AnyAsync(x => x.Key == optionKey); } /// /// 获取多个配置 /// /// 配置键列表 /// 配置字典 public async Task> GetMultipleOptions(params string[] optionKeys) { if (optionKeys == null || optionKeys.Length == 0) { return new Dictionary(); } var options = await _dbContext.Options .Where(x => optionKeys.Contains(x.Key)) .ToListAsync(); return options.ToDictionary(x => x.Key, x => x); } } }