using SqlSugar; using System; using System.IO; using System.Security.Cryptography; namespace ORM { public class DatabaseConfig { /// /// 数据库连接类型 /// public static DbType DbConnectionType { get; private set; } /// /// SQLite 数据库文件路径 /// public static string DbConnectionString { get; private set; } /// /// 数据租户Id /// public static int TenantId { get; private set; } /// /// 雪花算法DatacenterId,值范围:0至31 /// public static int SnowFlakeDatacenterId { get; private set; } /// /// 雪花算法WorkID,值范围:0至31 /// public static int SnowFlakeWorkId { get; private set; } #region 不同数据库初始化方法 public static void InitSqlite() { DbConnectionType = DbType.Sqlite; // 获取程序运行目录 string baseDir = AppDomain.CurrentDomain.BaseDirectory; // 确保 SQLDB 文件夹存在 string folder = Path.Combine(baseDir, "SQLDB"); if (!Directory.Exists(folder)) Directory.CreateDirectory(folder); // 拼接数据库文件路径 string DBPath = Path.Combine(folder, "SQL.db"); DbConnectionString = $"Data Source={DBPath};Version=3;"; } public static void InitMySql(string Server, int Port, string Database, string Uid,string Pwd) { DbConnectionType = DbType.MySql; DbConnectionString = $"Server={Server};Port={Port};Database={Database};Uid={Uid};Pwd={Pwd};"; } public static void InitSqlServer(string server,int port,string database,string user,string password) { DbConnectionType = DbType.SqlServer; DbConnectionString = $"Data Source={server},{port};Initial Catalog={database};user={user};Password={password};"; } public static void InitSqlServerLocalDb() { DbConnectionType = DbType.SqlServer; string baseDir = AppDomain.CurrentDomain.BaseDirectory; // 确保 SQLDB 文件夹存在 string folder = Path.Combine(baseDir, "SQLDB"); if (!Directory.Exists(folder)) Directory.CreateDirectory(folder); // 拼接数据库文件路径 string DBPath = Path.Combine(folder, "SQL.db"); DbConnectionString =$@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog={DBPath};Integrated Security=True;"; } #endregion /// /// 设置数据库连接字符串(可手动覆盖) /// public static void SetDbConnection(string strConnection) { if (string.IsNullOrEmpty(strConnection)) { throw new Exception("数据库连接字符串为空"); } DbConnectionString = strConnection; } /// /// 设置数据租户Id /// public static void SetTenant(int nTenantId) { if (nTenantId <= 10000) { throw new Exception("数据租户Id值需大于10000"); } TenantId = nTenantId; SetSnowFlake((nTenantId - 10000) % 1024); } /// /// 将指定数字转换为雪花算法DatacenterId和WorkID /// private static void SetSnowFlake(int nSnowFlakeId) { if (nSnowFlakeId > 1023 || nSnowFlakeId < 0) { throw new Exception("雪花算法机器码值范围0至1023"); } SnowFlakeDatacenterId = nSnowFlakeId >> 5; SnowFlakeWorkId = nSnowFlakeId & 31; } /// /// 检测数据库连接 /// public static void CreateDatabaseAndCheckConnection(bool createDatabase = false, bool checkConnection = false) { //数据库不存在则创建数据库 if (createDatabase) { SqlSugarContext.DbContext.DbMaintenance.CreateDatabase(); } // 检查数据库连接 if (checkConnection && !SqlSugarContext.DbContext.Ado.IsValidConnection()) { throw new Exception("连接数据库失败"); } } } }