Dapper로 매핑 할 때 열에서 공백을 자동으로 자릅니다.

ado.net c# dapper

문제

나는 Dapper를 사용하여 레거시 데이터베이스를 공격하고 열에 공백을 채 웁니다.

내가 찾은 해결책은 다음과 같은 속성을 추가하는 것입니다.

private string _status;
public string status 
{
    get { return _status; }
    set { _status = value.Trim(); }
}

분명히 이것은이 데이터베이스와 상호 작용할 모든 모델의 모든 문자열 구성원에 대해 지루한 작업입니다. SET ANSI_PADDING에 대한 MSDN 항목에 따르면이 값을 OFF로 수정하는 것은 옵션이 아닙니다.

데이터베이스가 제 것이 아니기 때문에 nvarchar 또는 simiar로 변경할 수 없습니다.

Dapper가 데이터베이스에서 읽는 모든 문자열 열을 다듬을 수있는 쉬운 방법이 있습니까?

인기 답변

한 가지 방법은 확장 메서드를 작성하고 리플렉션을 사용하여 클래스의 모든 문자열 속성을 다듬는 것입니다. 예 :

public static class ObjExt
{
    public static void Trim<T>(this T item)
    {
        var properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
        foreach (var p in properties)
        {
            if (p.PropertyType != typeof(string) || !p.CanWrite || !p.CanRead) { continue; }
            var value = p.GetValue(item) as string;
            p.SetValue(item,value.Trim());
        }
    }
}


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