📊 Descripción General
La clase AliConfigReader es un componente especializado que utiliza IniFile para leer configuraciones de base de datos y generar automáticamente cadenas de conexión. Esta clase está diseñada específicamente para manejar configuraciones de SQL Server.
🎯 Propósito de la Clase
- Configuración de BD: Lectura de parámetros de base de datos
- Generación de Connection Strings: Creación automática de cadenas de conexión
- Múltiples Conexiones: Soporte para múltiples bases de datos
- Formato Estándar: Generación de cadenas en formato SQL Server
- Simplicidad: API simple para configuración de BD
📄 Formato de Archivo INI
🏗️ Estructura Requerida
El archivo INI debe contener secciones, donde cada sección representa una base de datos diferente. Cada sección debe contener los siguientes parámetros:
- UserID: Nombre de usuario para la conexión
- Password: Contraseña para la conexión
- DataSource: Servidor o instancia de SQL Server
- InitialCatalog: Nombre de la base de datos
💡 Ejemplo de Archivo INI
[MasterDB]
UserID=restmaster_user
Password=secure_password_123
DataSource=localhost
InitialCatalog=RestMaster_Master
[StoreDB]
UserID=restmaster_user
Password=secure_password_123
DataSource=localhost
InitialCatalog=RestMaster_Store
[WorkingDB]
UserID=restmaster_user
Password=secure_password_123
DataSource=localhost
InitialCatalog=RestMaster_Working
💡 Ejemplo de Uso
🔧 Código de Ejemplo
// Crear instancia del lector
var configReader = new AliConfigReader("database.ini");
// Obtener todas las cadenas de conexión
var connectionStrings = configReader.GetConnectionStrings();
// Acceder a cadenas específicas
if (connectionStrings.ContainsKey("MASTERDB"))
{
string masterConnection = connectionStrings["MASTERDB"];
Console.WriteLine($"Master DB: {masterConnection}");
}
if (connectionStrings.ContainsKey("STOREDB"))
{
string storeConnection = connectionStrings["STOREDB"];
Console.WriteLine($"Store DB: {storeConnection}");
}
// Iterar sobre todas las conexiones
foreach (var kvp in connectionStrings)
{
Console.WriteLine($"Database: {kvp.Key}");
Console.WriteLine($"Connection: {kvp.Value}");
Console.WriteLine();
}
📊 Salida Generada
// Ejemplo de cadenas de conexión generadas:
MASTERDB: User ID=restmaster_user;Password=secure_password_123;Data Source=localhost;Initial Catalog=RestMaster_Master;
STOREDB: User ID=restmaster_user;Password=secure_password_123;Data Source=localhost;Initial Catalog=RestMaster_Store;
WORKINGDB: User ID=restmaster_user;Password=secure_password_123;Data Source=localhost;Initial Catalog=RestMaster_Working;
🎯 Casos de Uso
🔧 Escenarios de Uso
- Configuración Inicial: Configuración de conexiones al iniciar la aplicación
- Múltiples Entornos: Diferentes configuraciones para desarrollo, staging y producción
- Migración de Configuración: Conversión de configuraciones existentes
- Desarrollo Local: Configuración para desarrollo local
- Despliegue: Configuración para diferentes entornos de despliegue
📊 Integración con Entity Framework
// Ejemplo de integración con Entity Framework
var configReader = new AliConfigReader("database.ini");
var connectionStrings = configReader.GetConnectionStrings();
// Configurar DbContext
services.AddDbContext<MasterDbContext>(options =>
options.UseSqlServer(connectionStrings["MASTERDB"]));
services.AddDbContext<StoreDbContext>(options =>
options.UseSqlServer(connectionStrings["STOREDB"]));