私は、可能な限り柔軟である必要がある新しい大規模アプリケーションを設計しています。
私は主にDDDを使用して設計することを選択しました。
私の質問は、DTOオブジェクトをサービスレイヤーのDOオブジェクトに戻すことです。
すなわち:これはDBにマップされた私のドメインオブジェクトです(ORMを使用)
public class Cat
{
int ID {get; set;}
string Name {get; set;}
string BloodType {get; set;}
string Color {get; set;}
void Run(){...}
void Purr() {...}
}
メソッドと一部のプロパティは、サーバーアクションにのみ必要です。
そのため、この猫の種類用に別のデータ転送オブジェクトを設計しました。
public class CatDTO
{
int ID {get; set;}
string Name {get; set;}
}
途中で、DOをDTOに(またはその逆に)変換するオブジェクトマッパーを設定します。
クライアントが猫の名前を更新したいとき、彼はこのようなサービスを呼び出します
public void UpdateCat(CatDTO cat)
{
// What will happen here?
Cat serverCat = Mapper.GetCat(CatDTO);
CatDao.SaveOrUpdate(serverCat);
}
マッパーがDTOオブジェクトをDOに変換し直すとき、Catオブジェクトの欠落しているプロパティ(血液型など)を埋めるためにDBをヒットする必要があります。このアクションはばかげていると言う必要がありますが、空のプロパティを埋めることはありません。サーバー側の残りの部分は、欠落しているプロパティに依存しているため、Catオブジェクトを処理できません(DB内のデータを更新しようとしても、私のORMは血液型フィールドを空の文字列として更新します!)
この問題を検索しましたそして、ウェブ上で説明を見つけることができませんでした(または少なくとも私のように問題に悩まされている人)
私はそれを間違った方法で設計していますか?たぶん私は私のDDDで何かを逃しましたか?
ありがとう、パベル。