Files
XplorePlane/XP.Common/Database/Configs/ConfigLoader.cs
T

47 lines
2.1 KiB
C#

using System.Configuration;
namespace XP.Common.Database.Configs
{
/// <summary>
/// SQLite 配置加载器,从 App.config 读取数据库相关配置项 | SQLite configuration loader, reads database-related configuration from App.config
/// </summary>
public static class ConfigLoader
{
/// <summary>
/// 配置键前缀 | Configuration key prefix
/// </summary>
private const string KeyPrefix = "Sqlite:";
/// <summary>
/// 从 App.config 加载 SQLite 配置 | Load SQLite configuration from App.config
/// </summary>
/// <returns>SQLite 配置实体,缺失或无效配置项使用默认值 | SQLite configuration entity, uses default values for missing or invalid items</returns>
public static SqliteConfig LoadSqliteConfig()
{
var config = new SqliteConfig();
// 加载数据库文件路径 | Load database file path
var dbPath = ConfigurationManager.AppSettings[KeyPrefix + "DbFilePath"];
if (!string.IsNullOrEmpty(dbPath)) config.DbFilePath = dbPath;
// 加载连接超时时间 | Load connection timeout
var timeout = ConfigurationManager.AppSettings[KeyPrefix + "ConnectionTimeout"];
if (int.TryParse(timeout, out var t) && t > 0) config.ConnectionTimeout = t;
// 加载是否自动创建 | Load create if not exists
var createIfNotExists = ConfigurationManager.AppSettings[KeyPrefix + "CreateIfNotExists"];
if (bool.TryParse(createIfNotExists, out var c)) config.CreateIfNotExists = c;
// 加载是否启用 WAL 模式 | Load enable WAL mode
var enableWal = ConfigurationManager.AppSettings[KeyPrefix + "EnableWalMode"];
if (bool.TryParse(enableWal, out var w)) config.EnableWalMode = w;
// 加载是否开启 SQL 日志 | Load enable SQL logging
var enableSqlLog = ConfigurationManager.AppSettings[KeyPrefix + "EnableSqlLogging"];
if (bool.TryParse(enableSqlLog, out var l)) config.EnableSqlLogging = l;
return config;
}
}
}