Dapper-dot-netを使用して、SQLのuniqueidentifierカラムを.Netタイプにマッピングするにはどうすればよいですか?

.net dapper tsql

質問

.Net GUIDとは異なるGUID形式のSQL uniqueidentifier型を使用する既存のデータベースがあります。

質問: Dapperを使用して、SQL uniqueidentifierカラムを.Netにどのようにマッピングすればよいですか?

問題: Dapper-dot-netを使用して、.Net GUIDタイプを使用してカラムをマップすると、コンパイルされて実行されますが、すべての.ToString()出力が同じ不正なGUIDを表示します。 (まあ、それは私がSSMSで見るものと一致しません)

文字列型を使用して列をマップしようとすると、コンパイラエラーが発生します。

アイデア?これは可能ですか?

人気のある回答

また、T-SQLのvarcharにキャストすることもできますが、.NETの実際のGUIDタイプが必要でした。

Dapper 1.38では、POCOプロパティをNullable<Guid>た場合でもマッピングに問題はありませんでした(SQL Serverを基になるRDBMSとしても使用します)。 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は合法ですか? はい、理由を学ぶ