sql >> Base de Datos >  >> RDS >> Sqlserver

Parámetro de valor de tabla con procedimientos almacenados de Dapper

Históricamente, los parámetros con valores de tabla no han sido un gran enfoque en dapper; principalmente porque solo funcionan en SqlConnection (dapper intenta apuntar a proveedores arbitrarios, incluidos los proveedores ADO.NET "decorados", es decir, donde SqlConnection se esconde debajo de algún envoltorio). Lo que pudiste hacer es implementar IDynamicParameters manualmente (o simplemente tome prestados los DynamicParameters existentes clase) para agregar esta funcionalidad:

void SqlMapper.IDynamicParameters.AddParameters(System.Data.IDbCommand command,
                                                SqlMapper.Identity identity)
{
    ...
    // and then whatever the code is...
    ((SqlCommand)command).Parameters
        .AddWithValue(...,...).SqlDbType = System.Data.SqlDbType.Structured;
    ...
}

También me esforzaré por hacer los DynamicParameters concretos clase más polimórfica aquí, de modo que en una compilación futura puede simplemente override un solo método, detecte un tipo TVP-ish y agregue el parámetro manualmente.