Y a-t-il de toute façon une itération à travers un objet Dapper DynamicParameters?

dapper

Question

Je dois créer un enregistreur générique pour enregistrer certaines instructions d'insertion / mise à jour afin que mes testeurs puissent vérifier que les données insérées sont correctes.

Ma première pensée a été que j'utiliserais simplement une fonction qui accepterait DynamicParameters et que, par le biais de DynamicParameters, je générerais une chaîne pour lister le nom et la valeur du paramètre et les rendre plus lisibles pour les testeurs.

Malheureusement, Dapper.DynamicParameters ne contient pas de définition publique de "GetEnumerator"

Voici un exemple de base de ce que j'espérais faire:

string myFormattedListofParameters = "";
foreach (var p in myDynamicParameters)
{
myFormattedListofParameters += p.Name + "=" + p.Value.ToString();
}

Réponse acceptée

Essayer:

            var sb = new StringBuilder();
            foreach (var name in p.ParameterNames)
            {
                var pValue = p.Get<dynamic>(name);
                sb.AppendFormat("{0}={1}\n", name, pValue.ToString());
            }

Réponse populaire

    string ParametersToString(DynamicParameters parameters)
    {
        var result = new StringBuilder();

        if (parameters != null)
        {
            var firstParam = true;
            var parametersLookup = (SqlMapper.IParameterLookup)parameters;
            foreach (var paramName in parameters.ParameterNames)
            {
                if (!firstParam)
                {
                    result.Append(", ");
                }
                firstParam = false;

                result.Append('@');
                result.Append(paramName);
                result.Append(" = ");
                try
                {
                    var value = parametersLookup[paramName];// parameters.Get<dynamic>(paramName);
                    result.Append((value != null) ? value.ToString() : "{null}");
                }
                catch
                {
                    result.Append("unknown");
                }
            }

        }
        return result.ToString();
    }



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi