Dapper DynamicParameters 객체를 통해 반복 할 수 있습니까?

dapper

문제

테스터가 삽입 된 데이터가 올바른지 확인할 수 있도록 특정 삽입 / 업데이트 문을 기록하는 일반 로거를 만들어야합니다.

첫 번째 생각은 DynamicParameters를 허용하는 함수를 사용하고 DynamicParameters를 통해 foreach를 수행하여 매개 변수의 이름과 값을 나열하고 테스터가 더 쉽게 읽을 수 있도록 문자열을 생성하는 것입니다.

아쉽게도 Dapper.DynamicParameters에는 "GetEnumerator"에 대한 공용 정의가 포함되어 있지 않습니다.

여기에 내가 원하는 바에 대한 기본적인 예가있다.

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

수락 된 답변

시험:

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

인기 답변

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



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.