namespace MesETL.App.Options; public class TenantDbOptions { public string? TenantKey { get; set; } public string? UseDbGroup { get; set; } /// /// Key-Value: {DbName}-{TenantKeyLessThan} /// public Dictionary? DbGroup { get; set; } public string GetDbNameByTenantKeyValue(int tenantKeyValue) { // var dictionary = new SortedDictionary(); // DbList.ForEach(pair => dictionary.Add(pair.Value, pair.Key)); // 注意配置顺序 if(DbGroup is null) throw new ApplicationException("分库配置中没有发现任何数据库"); var dbName = DbGroup.Cast?>() .FirstOrDefault(pair => pair?.Value != null && pair.Value.Value > tenantKeyValue)!.Value.Key; return dbName ?? throw new ArgumentOutOfRangeException(nameof(tenantKeyValue), $"分库配置中没有任何符合'{nameof(tenantKeyValue)}'值的数据库"); } }