repository - 存储库是否应该通过传入 id 或实体本身来删除/删除实体

标签 repository domain-driven-design

我目前正在创建一个存储库,并想知道实体删除操作的“最佳实践”是什么。在下面的选项中,品牌和型号构成了 Car 实体的键。

选项 1:

deleteCar(Car car)

选项 2:
deleteCar(String make, String model)

选项 3:
deleteCar(CarKey carKey)

起初我认为选项 1,但在实践中选项 2 似乎更有吸引力(我不想在我只有 id 时必须获取一个对象,以便我可以将其传递给 delete 方法)。我选择选项 3 是因为我见过类似的东西,但这对我来说似乎不正确,因为 CarKey 并不是真正的域对象。

想法?

最佳答案

选项 3。

CarKey 不是域对象(尽管它可以是值对象)并不重要,id 是发生该操作所需要的全部内容。这是因为,如果 Car 是 AR,那么存储库应该知道如何 GetIt 以及如何处理删除。

关于repository - 存储库是否应该通过传入 id 或实体本身来删除/删除实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10215534/

相关文章:

c# - 哪个类应该负责为实体创建 ID?

maven-2 - 无法使用 Apache Archiva 作为镜像

git - 较长的提交历史记录是否会导致克隆 Git 存储库的速度变慢?

c# - 亚音速 3 - SimpleRepository

domain-driven-design - Antlr 是 DSL 生成器还是有意编程的替代品?

design-patterns - 使用与域实体的一对一接口(interface)是好的还是坏的做法?为什么?

android - 在不同的 android repo 标签之间切换

maven - Maven和Gradle嵌套依赖项

c# - 实现存储库模式的最佳方式?

asp.net-mvc - 我应该在哪一层放置 .edmx 并生成 POCO 类?