Asignar campos en el procedimiento almacenado a las propiedades de la clase con diferentes nombres con Dapper

dapper sql-server stored-procedures

Pregunta

Tengo esto ejercido desde una clase POCO con muchos campos:

public class Call
{
    public int Id { get; set; }
    public string Customer { get; set; }
    public int StatusId { get; set; }
    public int UserAssignedToId { get; set; }
    public string UserAssignedToName { get; set; }
}

Sin embargo, mi procedimiento almacenado devuelve diferentes nombres a las propiedades anteriores (en este caso, el ID es anterior a:

  • IdCall
  • IdStatus
  • IdUserAssignedTo

Este es el código que estoy usando para ejecutar el procedimiento almacenado:

var call = conn.Query<Call>("CallSPName", new { IdCall = callId }, commandType: CommandType.StoredProcedure).First();

¿Cómo puedo especificar un mapeo para decir que me gustaría "IdStatus" de mi mapa de procedimiento almacenado a "StatusId" en mi clase POCO y "IdCall" a "CallId", etc.?

No tengo acceso para cambiar los procedimientos almacenados ya que están controlados por los DBA y los sistemas heredados antiguos los están usando, lo que se rompería si los campos cambiaban en el procedimiento almacenado.

Cualquier idea / pensamiento apreciado.

Respuesta popular

Lo más parecido que me viene a la mente es tener propiedades privadas asignadas a las columnas devueltas por el procedimiento almacenado y hacer las propiedades públicas con los nombres que desea establecer y obtener esos campos privados:

// ...
private int IdStatus;
public int StatusId {
    get { return IdStatus; }
    set { IdStatus = value; }
}
// ...


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué