空の文字列の代わりに空の文字列を返すようにDapperを取得する

dapper

質問

私はそれが間違っていることを知っていますが、空の文字列を意味するNULLSを持つレガシーコードベースを取り扱っています。逆もまた同様です。

私はすぐにそれが可能であるかを見ることはできませんが、データベースから戻ってマッピングするときに空文字列を空文字列で返すことが可能です。

受け入れられた回答

Dapperはnullを見たときにセッターを呼び出さないので、オプションには次のものが含まれます:

  • コンストラクタのデフォルト値を""に設定する
  • アクセサ上で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;} }
}

ただし、これは値の読み取りにのみ適用されます。私はオンにDapperの取得するための良い方法を考えることはできません""nullパラメータオブジェクトとしてでDTOを渡すときに、オプションは次のとおりです。

  • (おそらく、 string NullIfBlank(this string s)拡張メソッドを書くstring NullIfBlank(this string s)型を作成し、 null ""を代入しnull
  • 返すタイプのシムプロパティ持つnullの代わりにする"" 、とにデータベースのクエリバインドを持って@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は合法ですか? はい、理由を学ぶ