namespace FileShare_EFCore.Database { /// /// 支持的数据库提供程序类型。 /// public enum DatabaseProvider { /// SQLite(本地文件数据库,无需安装,跨平台) SQLite, /// MySQL / MariaDB MySQL, /// PostgreSQL PostgreSQL, /// SQL Server SqlServer } /// /// 数据库连接配置 —— 在 appsettings.json 中配置。 /// public class DatabaseConfiguration { /// 数据库提供程序 public DatabaseProvider Provider { get; set; } = DatabaseProvider.SQLite; /// 连接字符串 public string ConnectionString { get; set; } = "Data Source=app.db"; /// 是否在启动时自动执行迁移 public bool AutoMigrate { get; set; } = true; /// /// 是否在迁移前删除并重建当前连接指向的数据库。 /// 仅用于切换数据库类型或本地开发重建库;生产环境默认必须保持 false。 /// public bool RecreateDatabase { get; set; } = false; /// 是否启用详细日志(会打印 SQL 语句) public bool EnableDetailedLog { get; set; } = false; /// 连接超时(秒) public int Timeout { get; set; } = 30; // ---- 快捷构建方法 ---- /// SQLite 本地数据库 public static DatabaseConfiguration ForSQLite(string dataSource = "app.db") { return new DatabaseConfiguration { Provider = DatabaseProvider.SQLite, ConnectionString = $"Data Source={dataSource}", AutoMigrate = true, }; } /// MySQL 数据库 public static DatabaseConfiguration ForMySQL(string server, string database, string user, string password, uint port = 3306) { return new DatabaseConfiguration { Provider = DatabaseProvider.MySQL, ConnectionString = $"Server={server};Port={port};Database={database};User={user};Password={password};", }; } /// PostgreSQL 数据库 public static DatabaseConfiguration ForPostgreSQL(string host, string database, string username, string password, int port = 5432) { return new DatabaseConfiguration { Provider = DatabaseProvider.PostgreSQL, ConnectionString = $"Host={host};Port={port};Database={database};Username={username};Password={password};", }; } /// SQL Server 数据库 public static DatabaseConfiguration ForSqlServer(string server, string database, string? user = null, string? password = null) { var connStr = string.IsNullOrEmpty(user) ? $"Server={server};Database={database};Trusted_Connection=True;TrustServerCertificate=True;" : $"Server={server};Database={database};User Id={user};Password={password};TrustServerCertificate=True;"; return new DatabaseConfiguration { Provider = DatabaseProvider.SqlServer, ConnectionString = connStr, }; } } }