我有一些架构/模式问题。假设我有两个类的域模型。我使用Code First和Repository Pattern。 (让它在我只用领域,而不是属性的例子更简单)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和PetDto类,唯一的区别是,在PersonDto宠物字段是一个简单的列表。我使用Automapper将模型类转换为dto。 Dto接下来通过REST Api发送给客户端。现在,如果从某种角度来看,我需要为每个人展示它的名字,姓氏和PetCount(让我们假设有那么多的宠物,这会使它们从数据库中拉出来,并在视图中简单计数)。
现在 - 介绍PetCount的正确方法是什么?我是否应该将这个字段放在PersonDto以及Person类中,并阻止它在数据库中创建列(对我来说这看起来不太合适)。或者,也许我应该只在PersonDto中创建PetCount字段 - 但是在何时计算这个值,在存储库方法中,还是在映射时(后者对我来说似乎都不合适)。另一个问题是,如果我应该在PetDto中创建额外的字段,或者我应该继承PersonDto与PersontWithPetCountDto,或者我应该创建PersontWithPetCountDto类没有继承,但与PetCount字段和PersonDto的所有字段