Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Parametro valore tabella con stored procedure Dapper

Storicamente i parametri con valori di tabella non sono stati un grande obiettivo in dapper; principalmente perché funzionano solo su SqlConnection (dapper cerca di prendere di mira provider arbitrari, inclusi provider ADO.NET "decorati", ad esempio dove un SqlConnection si nasconde sotto un involucro). Cosa potresti fare è implementare IDynamicParameters manualmente (o semplicemente prendere in prestito i DynamicParameters esistenti class) per aggiungere questa funzionalità:

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;
    ...
}

Cercherò anche di creare DynamicParameters concreti class more polymorphic qui, in modo che in una build futura puoi semplicemente override un unico metodo, rilevare un tipo TVP-ish e aggiungere il parametro manualmente.