← Volver a Common.Constants

MapperDb

Mapeo entre tipos de base de datos y clases del dominio

📊 Descripción General

La clase MapperDb proporciona funcionalidad para mapear tipos de base de datos a las clases correspondientes del dominio. Esta clase utiliza un diccionario para realizar el mapeo de manera eficiente y centralizada.

🎯 Propósito de la Clase

  • Mapeo de BD: Mapear tipos de BD a clases de dominio
  • Configuración: Configurar contextos de Entity Framework
  • Selección: Seleccionar la BD correcta según el tipo
  • Centralización: Centralizar la lógica de mapeo

📋 Propiedades y Métodos

DIC_TO_MAP_D_BTO_CLASS

Dictionary<string, string>
Diccionario privado que mapea tipos de BD a clases
Mapeos:
  • MAESTRO: → Common.Domain.Master
  • DIARIO: → Common.Domain.WorkingData
  • HISTORICO: → Common.Domain.StoreData

MapDBtoClass

string MapDBtoClass(string dbType)
Método público para mapear un tipo de BD a su clase correspondiente
Parámetros: dbType (string)
Retorna: string (nombre de la clase)
Excepción: InvalidOperationException si no encuentra el mapeo

💡 Ejemplo de Uso

// Mapear tipo de BD a clase string className = MapperDb.MapDBtoClass("MAESTRO"); // Resultado: "Common.Domain.Master" string className2 = MapperDb.MapDBtoClass("DIARIO"); // Resultado: "Common.Domain.WorkingData" string className3 = MapperDb.MapDBtoClass("HISTORICO"); // Resultado: "Common.Domain.StoreData" // Caso de error try { string invalidClass = MapperDb.MapDBtoClass("INVALIDO"); } catch (InvalidOperationException) { // Manejar error de mapeo no encontrado }

🗺️ Tipos de Base de Datos

📊 MAESTRO

  • Clase: Common.Domain.Master
  • Propósito: Datos maestros del sistema
  • Contenido: Artículos, clientes, empleados, configuraciones
  • Frecuencia: Cambios poco frecuentes

📊 DIARIO

  • Clase: Common.Domain.WorkingData
  • Propósito: Datos de trabajo en tiempo real
  • Contenido: Mesas, comandas, facturas del día
  • Frecuencia: Cambios constantes

📊 HISTORICO

  • Clase: Common.Domain.StoreData
  • Propósito: Datos históricos y de almacenamiento
  • Contenido: Facturas cerradas, reportes históricos
  • Frecuencia: Solo escritura, sin modificaciones

🔗 Casos de Uso

🎯 Escenarios de Uso

  • Configuración de Contextos: Configurar DbContext según el tipo
  • Selección de BD: Seleccionar la BD correcta para operaciones
  • Migraciones: Aplicar migraciones a la BD correcta
  • Consultas: Ejecutar consultas en la BD apropiada

📊 Beneficios

  • Centralización: Lógica de mapeo centralizada
  • Mantenibilidad: Fácil mantenimiento de mapeos
  • Consistencia: Mapeos consistentes en todo el sistema
  • Extensibilidad: Fácil agregar nuevos mapeos

🔗 Integración con Otros Componentes

📚 Componentes Relacionados

  • Common.Domain.Master: Contexto para datos maestros
  • Common.Domain.WorkingData: Contexto para datos de trabajo
  • Common.Domain.StoreData: Contexto para datos históricos
  • Back.Application: Servicios que usan diferentes contextos
  • Entity Framework: Configuración de DbContext

🎯 Aplicaciones Específicas

  • DatabaseManager: Gestión de múltiples bases de datos
  • DbContextFactory: Creación de contextos dinámicos
  • MigrationService: Aplicación de migraciones
  • QueryService: Ejecución de consultas específicas

⚠️ Consideraciones de Implementación

🔒 Manejo de Errores

  • InvalidOperationException: Lanzada cuando no se encuentra el mapeo
  • Case Insensitive: El mapeo es insensible a mayúsculas/minúsculas
  • Validación: Validar tipos de BD antes de usar
  • Logging: Registrar errores de mapeo

⚡ Optimizaciones

  • Diccionario Estático: Inicializado una sola vez
  • Búsqueda O(1): Búsqueda eficiente en diccionario
  • Memoria: Uso eficiente de memoria
  • Thread-Safe: Solo lectura, thread-safe