たとえば、プレゼンテーション層からデータを運ぶこのデータ転送オブジェクトがあります。
public class CompanyDTO
{
public int Id { get; set; }
public string Name { get; set; }
...
...
...
...
public string BlaBla { get; set; }
}
そして、対応するドメイン エンティティ:
public class Company
{
public int Id { get; private set; }
public string Name { get; private set; }
...
...
...
...
public string BlaBla { get; private set; }
public void ChangeName(string newName)
{
//business logic here
Name = newName;
}
}
Company クラスの Name プロパティを変更するときのビジネス ロジックがあるため、何が変更されたかを気にせずに dto のプロパティをドメイン エンティティにマップすることはできません。
エンティティの他のプロパティにも同じ状況が存在します (たとえば、変更がある可能性のある他のエンティティを含むコレクションなど)。
問題は、プロパティが dto で変更されたことをどのように追跡すれば、適切なメソッドを適用して何をする必要があるかということです。
これらすべてのプロパティを反復処理して、ドメイン エンティティと比較するよりも良い方法はありますか?