MES-ETL/MesETL.App/Options/TenantDbOptions.cs

41 lines
1.3 KiB
C#
Raw Normal View History

namespace MesETL.App.Options;
2024-12-10 14:03:09 +08:00
/// <summary>
/// 多租户分库配置
/// </summary>
public class TenantDbOptions
{
2024-01-29 09:29:16 +08:00
public string? TenantKey { get; set; }
public string? UseDbGroup { get; set; }
/// <summary>
/// Key-Value: {DbName}-{TenantKeyLessThan}
/// </summary>
public Dictionary<string, int>? DbGroup { get; set; }
public string GetDbNameByTenantKeyValue(int tenantKeyValue)
{
// var dictionary = new SortedDictionary<int, string>();
// DbList.ForEach(pair => dictionary.Add(pair.Value, pair.Key));
// 注意配置顺序
if(DbGroup is null) throw new ApplicationException("分库配置中没有发现任何数据库");
2024-12-10 14:03:09 +08:00
#region 使
// var dbName = DbGroup.Cast<KeyValuePair<string, int>?>()
// .FirstOrDefault(pair => pair?.Value != null && pair.Value.Value > tenantKeyValue)!.Value.Key;
#endregion
string? dbName = null;
foreach (var (key, value) in DbGroup)
{
if (value > tenantKeyValue)
dbName = key;
}
return dbName ??
throw new ArgumentOutOfRangeException(nameof(tenantKeyValue),
2024-01-29 09:29:16 +08:00
$"分库配置中没有任何符合'{nameof(tenantKeyValue)}'值的数据库");
}
}