Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Paramètre de valeur de table avec les procédures stockées Dapper

Historiquement, les paramètres de valeur de table n'ont pas été au centre des préoccupations de Dapper ; principalement parce qu'ils ne fonctionnent que sur SqlConnection (dapper essaie de cibler des fournisseurs arbitraires, y compris des fournisseurs ADO.NET "décorés" - c'est-à-dire où un SqlConnection se cache sous un emballage). Ce que vous pourriez faire est d'implémenter IDynamicParameters manuellement (ou simplement emprunter les DynamicParameters existants class) pour ajouter cette fonctionnalité :

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

Je vais également m'efforcer de rendre concrets les DynamicParameters classe plus polymorphe ici, de sorte que dans une future construction, vous pouvez simplement override une seule méthode, détectez un type TVP et ajoutez le paramètre manuellement.