94 lines
3.5 KiB
C#
94 lines
3.5 KiB
C#
namespace FileShare_EFCore.Database
|
||
{
|
||
/// <summary>
|
||
/// 支持的数据库提供程序类型。
|
||
/// </summary>
|
||
public enum DatabaseProvider
|
||
{
|
||
/// <summary>SQLite(本地文件数据库,无需安装,跨平台)</summary>
|
||
SQLite,
|
||
|
||
/// <summary>MySQL / MariaDB</summary>
|
||
MySQL,
|
||
|
||
/// <summary>PostgreSQL</summary>
|
||
PostgreSQL,
|
||
|
||
/// <summary>SQL Server</summary>
|
||
SqlServer
|
||
}
|
||
|
||
/// <summary>
|
||
/// 数据库连接配置 —— 在 appsettings.json 中配置。
|
||
/// </summary>
|
||
public class DatabaseConfiguration
|
||
{
|
||
/// <summary>数据库提供程序</summary>
|
||
public DatabaseProvider Provider { get; set; } = DatabaseProvider.SQLite;
|
||
|
||
/// <summary>连接字符串</summary>
|
||
public string ConnectionString { get; set; } = "Data Source=app.db";
|
||
|
||
/// <summary>是否在启动时自动执行迁移</summary>
|
||
public bool AutoMigrate { get; set; } = true;
|
||
|
||
/// <summary>
|
||
/// 是否在迁移前删除并重建当前连接指向的数据库。
|
||
/// 仅用于切换数据库类型或本地开发重建库;生产环境默认必须保持 false。
|
||
/// </summary>
|
||
public bool RecreateDatabase { get; set; } = false;
|
||
|
||
/// <summary>是否启用详细日志(会打印 SQL 语句)</summary>
|
||
public bool EnableDetailedLog { get; set; } = false;
|
||
|
||
/// <summary>连接超时(秒)</summary>
|
||
public int Timeout { get; set; } = 30;
|
||
|
||
// ---- 快捷构建方法 ----
|
||
|
||
/// <summary>SQLite 本地数据库</summary>
|
||
public static DatabaseConfiguration ForSQLite(string dataSource = "app.db")
|
||
{
|
||
return new DatabaseConfiguration
|
||
{
|
||
Provider = DatabaseProvider.SQLite,
|
||
ConnectionString = $"Data Source={dataSource}",
|
||
AutoMigrate = true,
|
||
};
|
||
}
|
||
|
||
/// <summary>MySQL 数据库</summary>
|
||
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};",
|
||
};
|
||
}
|
||
|
||
/// <summary>PostgreSQL 数据库</summary>
|
||
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};",
|
||
};
|
||
}
|
||
|
||
/// <summary>SQL Server 数据库</summary>
|
||
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,
|
||
};
|
||
}
|
||
}
|
||
}
|