Dapperでguidにマップする文字列

c# dapper orm sql

質問

Dapperを使用して、PostgreSQLデータベースにアクセスする必要がある負荷テストツールをいくつか試しています。この特定のバージョンのPostgreSQLはGUIDをネイティブでサポートしないため、GUIDの値は32文字の文字列として保存されます。値はsomeGuid.ToString("N")を使用して文字列に変換され、Guidへの変換はnew Guid(stringValueFromColumn)を使用して行うことができます。

私の質問は、Dapperに文字列を読み込ませ、それらをGuidsに戻す方法です。

私はDbTypeマッピングを修正しようとしましたが、うまくいきません。

受け入れられた回答

おそらく、これを行う最も簡単な方法は(ダッパーで待たずに)2番目のプロパティを持つことです:

public Guid Foo {get;set;}

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

そして、あなたのクエリでは、列をFooStringとしてエイリアスします。

もちろん、これは疑問を催促します:dapperはこのタイプのプライベートプロパティをサポートすべきですか?おそらく、私は言う:おそらく。


人気のある回答

これは古い質問ですが、私はDapperがプライベートプロパティをサポートするように更新する必要があると感じています。

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は合法ですか? はい、理由を学ぶ