Domain driven design DDD,移到垃圾桶,如何设计

Domain driven design DDD,移到垃圾桶,如何设计,domain-driven-design,ddd-repositories,Domain Driven Design,Ddd Repositories,我有一个简单的用例,用户可以放弃aprofile。这确实很容易理解,但会引起一些建模问题 1/可以在我的档案实体中设置一个标志来指示他在垃圾桶中吗 我不这么认为。所以我想要两个ProfileRepository和trashrespository 2/考虑到这两个存储库,在我的应用程序服务中,我只需从他的存储库中删除配置文件并将其添加到垃圾箱中。看起来很自然,但如果我不能进行交易,可能会造成麻烦。(但在我的应用程序中并非如此) 但是,我使用的是关系数据库,第一个想法是使用列来指示行是否在垃圾箱中,

我有一个简单的用例,用户可以
放弃
a
profile
。这确实很容易理解,但会引起一些建模问题

1/可以在我的
档案
实体中设置一个标志来指示他在垃圾桶中吗

我不这么认为。所以我想要两个
ProfileRepository
trashrespository

2/考虑到这两个存储库,在我的应用程序服务中,我只需从他的存储库中删除配置文件并将其添加到垃圾箱中。看起来很自然,但如果我不能进行交易,可能会造成麻烦。(但在我的应用程序中并非如此)

但是,我使用的是关系数据库,第一个想法是使用列来指示行是否在垃圾箱中,并让两个存储库在同一个表上工作。我不确定这是个好主意

我还可以向
档案库
添加一个
discard
方法,这样我就不需要这两个方法了

哪一个是最好的解决方案?
我是否可以设置一个标志来确定实体中的状态(已丢弃),还是最好有两个具有不同存储库的不同实体?

丢弃实际上是一个业务命令,命令将始终改变域的状态。我相信有一个状态表明配置文件已被丢弃是完全正确的。错误的做法是引入一个属性,例如当您真正的意思是丢弃

然而,有些人认为明确地对状态建模有时是有用的:使用一个完全不同的类来表示被丢弃的概要文件

以下是一些与显式状态建模相关的链接:


Discard实际上是一个业务命令,一个命令总是会改变域的状态。我相信有一个状态表明配置文件已被丢弃是完全正确的。错误的做法是引入一个属性,例如当您真正的意思是丢弃

然而,有些人认为明确地对状态建模有时是有用的:使用一个完全不同的类来表示被丢弃的概要文件

以下是一些与显式状态建模相关的链接:


你为什么反对
档案中的
丢弃
标志?因为我认为这不是“现实生活”的一部分,但经过一些讨论和反思,我认为我错了。事实上,“丢弃”比“删除”或“活动”更容易接受。你为什么反对
配置文件中的
丢弃
标志?因为我认为这不是“真实生活”的一部分,但经过一些讨论和反思,我认为我错了。事实上,“丢弃”比“删除”或“活动”更容易接受。拥有一个完全不同的类是我最喜欢的解决方案的一部分。但是,,我可以创建
ProfileRespository
谁处理
Profile
s和
trashrespository
谁处理
DiscaredProfile
s,还是只创建一个有两个以上操作的
DiscaredProfile
recover
?@Anonymous在IMO上你会有两个不同的存储库。如果你通过你的域模型查询(我认为您应该这样做)将任何状态的概要文件列在一起并不难。但是,如果您不这样做,那么您将需要与许多不那么有趣的存储库进行交互。我不确定的一点是,您是否可以轻松地将所有状态存储在同一个DB表中。我还没有检查像Hibernate这样的ORM如何处理这个问题。拥有一个完全不同的类是我最喜欢的解决方案的一部分。但是,,我可以创建
ProfileRespository
谁处理
Profile
s和
trashrespository
谁处理
DiscaredProfile
s,还是只创建一个有两个以上操作的
DiscaredProfile
recover
?@Anonymous在IMO上你会有两个不同的存储库。如果你通过你的域模型查询(我认为您应该这样做)将任何状态的概要文件列在一起并不难。但是,如果您不这样做,那么您将需要与许多不那么有趣的存储库进行交互。我不确定的一点是,您是否可以轻松地将所有状态存储在同一个DB表中。我还没有检查像Hibernate这样的ORM如何处理这个问题。