私は WPF MVVM アプリを作成していますが、データベース Dto オブジェクトからモデル エンティティへのマッピングについて質問があります。
まず、このプロジェクトでは ORM を使用していません (EF や NH など)。つまり、Dto コレクションを返すメソッドを持つ Oracle リポジトリだけがあります。
private IList<MyDataDto> LoadData(){
...
}
MyDataDto は次のようになります。
public class MyDataDto
{
public DateTime? MyDate { get; set; }
public string Identifier { get; set; }
public decimal? Value { get; set; }
}
MyDataEntity は次のようになります。
public class MyDataEntity
{
public DateTime? MyDate { get; set; }
public decimal? Toyota { get; set; }
public decimal? Honda { get; set; }
public decimal? Nissan { get; set; }
public decimal? Mazda { get; set; }
}
そして私のモデルは次のようになります:
public class MyModel : INotifyPropertyChanged
{
private IEnumerable<MyDataEntity> modelData;
public IEnumerable<MyDataEntity> ModelData
{
get { return modelData; }
set
{
modelData= value;
OnPropertyChanged("ModelData");
}
}
//other stuff in here but not shown for brevity
}
私は Quartz スケジューラを実行しており、そのジョブでデータベースにクエリを実行し、カスタム マッパーが Dto コレクションを Entity コレクションにマップし、Entity コレクションを INotifyPropertyChanged インターフェイスから継承するモデルに割り当てて、変更が UI に反映されるようにします。
MyDataDto の各識別子の値は、MyDataEntity のプロパティと同じです。したがって、有効な Identifer 値が Toyota の場合、MyDataEntity の列名は Toyota になります。これらの識別子はクエリの where 句で既に指定されているため (そうである必要があります)、どの識別子が取得されるかはわかっています。
だから、私の質問はこれです.データグリッドへのマッピングが簡単になるように、私が示したような醜いエンティティ(列名として識別子を使用)を持っても大丈夫ですか?それとも、より良い、より好ましい方法がありますか?