鉴于DDD中ValueObjects的性质,可以将它们视为包含数据库查询结果集的容器的集合吗?
例如,这个伪代码可以合理地使用ValueObject概念?:List<ValueObject> resultSet = GetValueObjectsFromDB();
List<ValueObject> GetValueObjectsFromDB()
{
return ExecuteCommand("SELECT * FROM dbo.AnEntity");
}
答案 0 :(得分:1)
我认为你混淆了作为域驱动设计的构建块之一的Value Object和作为哑数据容器的DTO(Data Transfert Object)。
值对象:对象没有概念标识。它们应该被视为不可变的。 Value Object在域模型中扮演他的角色,并且经常会有与之相关的行为。
DTO :它只是一个愚蠢的数据容器,可用于在线上或架构层之间传输数据。
您在查询中使用的内容&#39;方是根据您的特定需求量身定制的DTO。如果您想在屏幕上显示它或将这些数据传输到另一个系统,DTO就是这样做的。