Dapper-dot-net을 사용하여 SQL uniqueidentifier 열을 .NET 유형에 매핑하는 방법은 무엇입니까?

.net dapper tsql

문제

.NET GUID가 아닌 다른 GUID 형식으로 보이는 SQL "uniqueidentifier"형식을 사용하는 기존 데이터베이스가 있습니다.

질문 : Dapper를 사용하여 SQL uniqueidentifier 열을 .NET에 매핑하는 방법은 무엇입니까?

문제 : .Net GUID 유형을 사용하여 열을 매핑 할 때 Dapper-dot-net을 사용하면 컴파일되고 실행되지만 모든 .ToString () 출력에는 동일한 잘못된 GUID가 표시됩니다. (잘 SSMS에서 내가 본 것과 일치하지 않는다)

문자열 유형을 사용하여 열을 매핑하려고하면 컴파일러 오류가 발생합니다.

아이디어? 이것이 가능한가?

인기 답변

또한 T-SQL에서 varchar로 캐스팅 할 수도 있지만 .NET에서 실제 GUID 유형을 원했습니다.

Dapper 1.38 (SQL Server를 기본 RDBMS로 사용)에서도 POCO 속성을 Nullable<Guid> 로 설정하면 매핑에 문제가 없었습니다. SqlGuid 또는 문자열이 작동하지 않았습니다.

public class MapMe
{
    public Guid? GuidByDapper { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        using (var connection = Utility.GetConnection())
        {
            var mapped = connection.Query<MapMe>("SELECT NEWID() AS GuidByDapper").Single();
            Console.WriteLine("Guid: {0}", mapped.GuidByDapper);
        }
    }
}

콘솔 응용 프로그램으로 다음과 같은 메시지가 나옵니다.

Guid: 85d17a50-4122-44ee-a118-2a6da2a45461


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