Gibt es trotzdem ein Dapper DynamicParameters-Objekt?

dapper

Frage

Ich muss einen generischen Logger machen, um bestimmte insert / update-Anweisungen aufzuzeichnen, so dass meine Tester überprüfen können, ob die eingefügten Daten korrekt sind.

Mein erster Gedanke war, dass ich nur eine Funktion verwenden würde, die DynamicParameters akzeptiert, und ich würde über die DynamicParameters eine Zeichenfolge generieren, um den Namen und Wert des Parameters aufzulisten und sie für die Tester leichter lesbar zu machen.

Leider enthält Dapper.DynamicParameters keine öffentliche Definition für "GetEnumerator"

Hier ist ein grundlegendes Beispiel für das, was ich mir vorgenommen habe:

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

Akzeptierte Antwort

Versuchen:

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

Beliebte Antwort

    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();
    }


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum