DBとUIのデータ形式を変換する
データベースで'0'や'1'で保持している値を、ユーザーインターフェースではCheckBoxで表現したい、などというケースはよくあります。一般的にはDBEntityとUIEntityを別クラスで作ってDxo機能で変換するようですが、DBとUIが密接なEntity(画面表示用のSELECTと対になるEntity)に、変換機能を持たせることで一層減らす方法を考えました。
SeasarもListViewもEntityにプロパティ名でアクセスするので、まずいつも通りDB側の定義から生成したEntityに、UI用のプロパティを追加しています。例ではDB側は表示区分Varchar2のカラムをstringのプロパティで受けて、UIとはboolのプロパティでget/setできるようにしています。C#ではプロパティのoverloadができないので、苦肉でUI用のプロパティにはプレフィクスUIを付けています。
public string 表示区分 { get; set; } public bool UI表示区分 { get { return 表示区分 == 区分定数.表示区分.表示する; } set { 表示区分 = value ? 区分定数.表示区分.表示する : 区分定数.表示区分.表示しない; } }
static class 区分定数 { static class 表示区分 { public static string 表示しない = "0"; public static string 表示する = "1"; } }