Dapper를 사용하여 guid에 문자열 매핑

c# dapper orm sql

문제

Dapper를 사용하여 PostgreSQL 데이터베이스에 액세스해야하는로드 테스트 도구를 망치고 있습니다. 이 특정 버전의 PostgreSQL은 기본적으로 GUID를 지원하지 않으므로 GUID 값은 32 자 문자열로 저장됩니다. 값은 someGuid.ToString("N") 사용하여 문자열로 변환되며, new Guid(stringValueFromColumn) 사용하여 Guid로 다시 변환 할 수 있습니다.

제 질문은 Dapper에게 문자열을 읽고 Guids로 다시 변환 시키려면 어떻게해야합니까?

DbType 매핑을 수정하려고 시도했지만 작동하지 않습니다.

수락 된 답변

아마도 (dapper를 기다리지 않고) 이것을 수행하는 가장 간단한 방법은 두 번째 속성을 갖는 것입니다.

public Guid Foo {get;set;}

public string FooString {
    get { return Foo.ToString("N"); }
    set { Foo = new Guid(value); }
}

그리고 쿼리에서 FooString 별칭을 FooString 합니다.

물론 이것은 다음과 같은 질문을 던져줍니다. dapper가이 유형의 사적 속성을 지원해야합니까? 내가 말하는 것은 아마 : 아마.


인기 답변

이것은 오래된 질문이지만, Dapper가 개인 속성을 지원함에 따라 업데이트가 필요하다고 생각합니다. Marc은 그의 답변에서이 속성을 참조했습니다.

private String UserIDString { get; set; }
public Guid UserID
{
    get
    {
        return new Guid(UserIDString);
    }
    private set
    {
        UserID = value;
    }
}

그런 다음 SQL에서 ID 열에 별칭을 지정하여 실제 속성이 아닌 개인 속성에 매핑합니다.

SELECT UserID AS UserIDString FROM....


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