Dapperでマッピングするときに空白を自動的にトリムする

ado.net c# dapper

質問

私はDapperを使用してレガシーデータベースをヒットしていて、その列に空白のパディングがあります。

私が見つけた解決策は、以下のようなプロパティを追加することです:

private string _status;
public string status 
{
    get { return _status; }
    set { _status = value.Trim(); }
}

明らかに、これはこのデータベースと対話するすべてのモデルのすべての文字列メンバで行うのが面倒です。 SET ANSI_PADDINGのMSDNエントリによれば、これをOFFに変更することもオプションではありません。

データベースは私のものではないので、nvarcharまたはsimiarに変更することはできません。

Dapperにデータベースから読み込むすべての文字列をトリムする簡単な方法はありますか?

人気のある回答

1つの方法は、拡張メソッドを作成し、リフレクションを使用してクラスのすべての文字列プロパティをトリミングすることです。例えば:

public static class ObjExt
{
    public static void Trim<T>(this T item)
    {
        var properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
        foreach (var p in properties)
        {
            if (p.PropertyType != typeof(string) || !p.CanWrite || !p.CanRead) { continue; }
            var value = p.GetValue(item) as string;
            p.SetValue(item,value.Trim());
        }
    }
}


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow