私はいくつかのアーキテクチャ/パターンの質問があります。私は2つのクラスを持つドメインモデルを持っていると仮定します。私はコードファーストとリポジトリパターンを使用します。 (私はフィールドだけではなく、プロパティを使用する例では、それはよりシンプルにするために)DTOの集計フィールド
public class Person {
public int Id;
public string Name;
public string Surname;
public virtual ICollection<Pet> Pets;
}
public class Pet {
public string Name;
public int BirthYear;
public int OwnerId;
public Person Owner;
}
私もPersonDtoでペットフィールドは、単純なリストであることを、唯一の違いは、PersonDto、およびPetDtoクラスを持っています。 Automapperを使ってモデルクラスをdtoに変換します。 Dtoは、次にREST APIを通じてクライアントに送信されます。さて、ある人の見解では、名前、姓、PetCountを見せなければならない場合はどうすればいいでしょうか?(多くのペットがいるので、データベースから抜き出して単純に見積もるのは非常に効率的になりません。
今、PetCountを導入する正しい方法は何でしょうか。私はこのフィールドをPersonクラスとPersonクラスに入れ、それがデータベースにカラムを作成しないようにする必要があります。あるいは、私はPersonDtoでPetCountフィールドを作成してください - しかし、この値をいつリポジトリメソッドでカウントするか、あるいはマッピングしているときに(後者は私にとって正しいと思われません)。別の質問は、PetDtoで余分なフィールドを作成する必要があるかどうか、あるいはPersontWithPetCountDtoでPersonDtoを継承するか、継承なしでPersontWithPetCountDtoクラスを継承する必要があるかもしれないが、PersonCountフィールドとPersonDtoのすべてのフィールドを含む。