0

たとえば、変更できないさまざまなプロパティを持つデータベースによって生成されたデータ クラスがある状況があります。

public DataClass
{
    public string PropertyX {get; set;}
    public int PropertyY {get; set;}
    public float PropertyZ {get; set;}

}

これらのクラスの中には、20 程度のプロパティを持つものもあります。データを更新すると、「永続」データの「一時」コピーが作成され、次にプロパティが一時データで更新され、一時データから永続データにコピーされます。

1 つのプロパティだけを変更するのはあまり効率的ではありませんが、これは問題ありません。

フラグ付きプロパティのリストを作成したり、更新したい特定のフラグ付きプロパティに属性を追加したりできる方法が c# にあるかどうかを知りたかったのです。

したがって、最終結果は次のようになります(これはすべて疑似であることに注意してください)

 DataClass transientObj = new DataClass(Transient);
 [FlagPropertyToUpdate] //This is the bit I have no idea how to do
 transientObj.propertyX = "updateOnlyMe!";
 DataClass persistantObj = new DataClass(Persistant);
 UpdateData dataUpdater = new UpdateData(transientObj,persistantObj)

 dataUpdater.save();

 public UpdateData 
 {
      public void save(){
          //some how know to only update propertyX and not all three properties
      }  
      public UpdateData(DataClass trans, DataClass pers)
 }

これをどのように行うことができるか(および可能であれば)についての支援をいただければ幸いです。

4

2 に答える 2

1

View Model がここに収まると思います。

ViewModel は、モデル内のデータの実際の状態とは対照的に、View の抽象化またはデータの概念的な状態です。

したがって、この場合、次のようなクラスがあります。

public DataClassViewModel
{
    //Define all relevant properties here.
    ...
    public DataClassViewModel(DataClass model) //Constructor
    {
       //Initialize the view model from the model. 
    }

    public DataClass GetModel()
    {
       //Depending on changes in the view model, model could be updated here.
    }

    public void UpdateData()
    {
    }
}

ビューモデルの詳細については、次を参照してください。

Model-View-ViewModel (MVVM) の説明MVC の
実行方法 – ビュー モデル MVC の ViewModel とは?

記事は MVC/MVVM UI アーキテクチャを指していますが、ビュー モデルは非常に一般的な概念です。

于 2013-09-10T06:31:52.787 に答える
1

関連するプロパティのダーティ フラグをサポートする DTO (データ転送オブジェクト) を作成することをお勧めします。そうすれば、クラスは変更されないままになります。Automapperを見てください。

繰り返しになりますが、プロパティの完全なセットを更新するのは非効率的であるというあなたの主張を再考することをお勧めします。それらが単純な型であると仮定した場合です。通常、データベースの行全体への書き込みは、単一の列への書き込みよりもコストがかかりません。あなたが説明した状況での並行性にもっと関心があります。

于 2013-09-10T06:41:45.423 に答える