使用摘要对象与领域驱动设计

4

我新接触领域驱动设计。我们正在创建实体对象来表示我们的模型,并使用相同模式的数据库表进行表示。但是我对摘要对象有些困惑。

Product 是一个实体和数据库表。 States 是一个实体和数据库表。

我想要得到这样的摘要列表:

StateName     ProductName      SellCount
---------------------------------------
State-1       Laptop-ESD14     145
State-1       IPhone-FMNL8     1220
State-1       Book-OYLG4       7789

这是一个统计对象,实际上这是一个关系型select查询结果。我应该把这个对象存储在哪里?它是实体(Entity)、值(Value)还是视图模型(ViewModel)?
如果这是一个视图模型(ViewModel),我不能将其存储在域层(Domain Layer)中,但可以存储在应用层(Application Layer)。在这种情况下,如何从数据库中获取此对象? (同时,我正在使用ORM工具,如Entity Framework)
2个回答

3

这是实体、值对象还是视图模型?

视图模型不是DDD相关术语,但如果它是只读的,似乎可以作为读模型。从那里,您可以为其编写一个简单的专用“报告”存储库,或者采取完整的CQRS路线。


2

在DDD中,不存在统计对象。在你的整个领域模型完成之前,你应该放弃所有实现细节,比如创建哪些表等。

从DDD的角度来看,无论是使用复杂的连接加载对象,还是其他方式,它仍然只是一个实体或值对象。

在DDD中,我们使用仓储模式只是为了能够抽象掉这些细节,并专注于构建代表利益相关者意愿和语言的领域模型。


我的摘要统计视图模型被命名为SaleSummaryView。那么,SaleSummaryView是一个值对象吗? - barteloma
1
@bookmarker:只有你能回答这个问题。价值对象的定义是:“一个包含属性但没有概念身份的对象。它们应该被视为不可变的。” - jgauffin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接