Dapper가 null 문자열 대신 빈 문자열을 반환하도록 함

dapper

문제

일종의 잘못 알고 있지만 빈 문자열을 의미 할 때 NULLS가있는 레거시 코드베이스를 처리하고 그 반대의 경우도 마찬가지입니다.

어떻게 가능한지 즉시 알 수는 없지만 데이터베이스에서 다시 매핑 할 때 null 문자열 대신 빈 문자열을 반환 할 수 있습니다 (또는 modifiy dapper이므로 가능).

수락 된 답변

Dapper는 null을 볼 때 setter를 호출하지 않으므로 옵션에 다음이 포함될 수 있습니다.

  • 생성자에서 기본값을 "" 으로 설정하십시오.
  • 접근 자에서 null 을 확인하십시오.

그래서:

public class SomeDto
{
    public SomeDto()
    {
        Name = "";
    }
    public string Name {get;set;}
}

또는:

public class SomeDto
{
    private string name;
    public string Name { get {return name ?? "";} set {name = value;} }
}

그러나 이는 값을 읽는 경우에만 적용됩니다. 나는 켤 단정 얻을 수있는 좋은 방법을 생각할 수 없다 ""null 매개 변수 개체로의 DTO를 통과 할 때; 옵션에는 다음이 포함됩니다.

  • (아마도 string NullIfBlank(this string s) 확장 메소드를 작성합니다.) null "" 를 대입하여 anon 유형을 작성하십시오.
  • "" 대신 null 을 반환하는 유형에 shim 속성이 있고 데이터베이스 쿼리가 @NameOrNull 이 아닌 @Name 바인딩되도록합니다.

인기 답변

다음과 같이 쿼리로이를 제어 할 수 있습니다.

    public class Data
    {
        public string Foo { get; set; }
    }

    var result = conn.Query<Data>("select Foo = coalesce(Foo, '') from MyTable");

따라서 위의 예에서 Fales가 null이면 coalesce는 빈 문자열을 반환합니다.



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