Data Mapper en C#: Guía Completa

Introducción: Mapeo limpio

Data Mapper traduce entre objetos de dominio y BD. No mezcles SQL en lógica. Mapper aísla. Dominio no sabe SQL. Mapper sabe SQL, traduce queries a objetos. Ventaja: dominio limpio, test fácil. Desventaja: boilerplate. ORM (EF Core) es Data Mapper. Sin ORM, implementa manualmente. Usa cuando perf crítica. Usa ORM cuando dev speed importa.

Data Mapper
Prompt: Data mapper translating between objects and tables, clean minimal style.

1. Naturaleza: Traductores

Un traductor convierte un idioma en otro sin alterar el contenido.

El Data Mapper traduce entre el lenguaje del dominio y el de la base.

Traductor
Prompt: Translator bridging two languages, soft illustration.

2. Mundo Real: Integración de sistemas

Una empresa integra sistemas legacy con un modelo moderno.

El mapper adapta estructuras antiguas sin contaminar el dominio.

Integración
Prompt: System integration mapping diagram, clean flat style.

3. Implementación en C#: Código Paso a Paso

public class ProductoMapper
{
    public Producto FromRow(DbRow row) => new Producto(row.Id, row.Nombre);
    public DbRow ToRow(Producto p) => new DbRow(p.Id, p.Nombre);
}

El mapper se ubica en la infraestructura, no en el dominio.

Combina con Repository para consultas y persistencia coherentes.

4. Data Mapper vs Active Record

Active Record mezcla dominio y persistencia. Data Mapper los separa.

Si tu dominio es simple, Active Record puede bastar. Si es complejo, Data Mapper es más limpio.

5. Diagrama UML

UML Data Mapper
Prompt: UML diagram of data mapper, clean vector layout.
Flujo Data Mapper
Prompt: Data mapper flow diagram, minimal infographic style.

⚠️ Cuándo NO Usar Data Mapper

  • Si el dominio es simple y CRUD directo es suficiente.
  • Si el equipo no necesita separar persistencia y modelo.
  • Si el costo de mantenimiento supera el beneficio.

💪 Ejercicio

Crea un mapper para convertir entre una fila de base y un objeto de dominio.

Conclusión

Data Mapper mantiene el dominio limpio y desacoplado de la base.

Es un patrón clave cuando el modelo de negocio es complejo y evoluciona con frecuencia.