DDD。我应该在存储库中修改实体吗?

埃里克·Z

我对实现DDD和存储库模式有疑问。我应该在存储库中修改实体吗?

假设我有一个订单,想将该订单标记为完成。如我所见,我有两种选择。

    1。
var order _orderRepository.GetById(1);
order.Finish();
_orderRepository.Update(order);

...将更改保存在Update调用中的数据库中

2。

var order _orderRepository.GetById(1);
var finishedOrder = _orderRepository.Finish(order);

...将更改保存到完成调用中的数据库中

使用一种方法相对于另一种方法是否有优势?这样做的DDD方法是什么?

贾高芬

您不应在存储库中对其进行修改。

原因是存储库负责提取持久性(即,对数据存储的读取/写入)。

如果您还使其对某些业务逻辑负责,则违反了“单一责任原则”。

如果要进行自动化测试,这还意味着您必须进行集成测试以确保数据库通信/映射有效,然后进行单元测试以验证在其中引入的业务逻辑。

看起来微不足道。但这是您第一次违反该原则时的琐事。但是,一次违规通常会导致另一次违规,最终导致应用程序的维护不那么容易:)

类具有混合职责的应用程序也很难导航。每次您要更新功能时,都必须遍历所有层以查找实际逻辑的完成位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

DDD。我应该在存储库中修改实体吗?

来自分类Dev

我应该在我的数据库中存储其他实体的用户特定信息吗?

来自分类Dev

我应该在C ++的类中存储引用吗?

来自分类Dev

我应该在DDD架构中为DTO添加验证吗?

来自分类Dev

Phonegap-我应该在git存储库中包括JS供应商文件吗?

来自分类Dev

我应该在git中存储用于自动化测试的数据库备份吗?

来自分类Dev

我应该在数据库中存储桌面应用程序的本地化数据吗?

来自分类Dev

Phonegap-我应该在git存储库中包括JS供应商文件吗?

来自分类Dev

我应该在网站上使用 JavaScript 数组来存储数据库中的项目数据吗?

来自分类Dev

EF:我应该在我的实体中包括外键ID吗?

来自分类Dev

我应该在存储库之类的地方使用ConfigureAwait(false)吗?

来自分类Dev

我应该在Electron中使用本地存储进行数据库配置吗?

来自分类Dev

我应该在WPF存储库中跟踪.baml文件吗?

来自分类Dev

我应该在存储中存储永不更改(引导)的数据吗?

来自分类Dev

我应该在PackageConfig.cmake中修改CMAKE_MODULE_PATH吗

来自分类Dev

您应该在JPA中为每个表建立一个存储库吗?

来自分类Dev

MVC:应该在Controller或每个Action中实例化存储库吗?

来自分类Dev

最佳实践:我应该在数据库中存储哪些信息?

来自分类Dev

我是否应该在应用程序的存储库中包含测试框架的源代码?

来自分类Dev

我是否应该在应用程序的存储库中包含测试框架的源代码?

来自分类Dev

我应该在Android App的内部存储器中删除文件吗?

来自分类Dev

我应该在助焊剂存储器中过滤吗?

来自分类Dev

我应该在PHP文件中存储application-scope变量吗?

来自分类Dev

我应该在Android Studio中存储大量图片吗?

来自分类Dev

我应该在此库中(以及在何处)使用volatile吗?

来自分类Dev

我应该在sqlite中存储什么颜色?

来自分类Dev

我应该在模型中抛出HttpStatus异常吗?

来自分类Dev

我应该在交易中包含SELECT吗?

来自分类Dev

我应该在表示层中抛出异常吗?

Related 相关文章

  1. 1

    DDD。我应该在存储库中修改实体吗?

  2. 2

    我应该在我的数据库中存储其他实体的用户特定信息吗?

  3. 3

    我应该在C ++的类中存储引用吗?

  4. 4

    我应该在DDD架构中为DTO添加验证吗?

  5. 5

    Phonegap-我应该在git存储库中包括JS供应商文件吗?

  6. 6

    我应该在git中存储用于自动化测试的数据库备份吗?

  7. 7

    我应该在数据库中存储桌面应用程序的本地化数据吗?

  8. 8

    Phonegap-我应该在git存储库中包括JS供应商文件吗?

  9. 9

    我应该在网站上使用 JavaScript 数组来存储数据库中的项目数据吗?

  10. 10

    EF:我应该在我的实体中包括外键ID吗?

  11. 11

    我应该在存储库之类的地方使用ConfigureAwait(false)吗?

  12. 12

    我应该在Electron中使用本地存储进行数据库配置吗?

  13. 13

    我应该在WPF存储库中跟踪.baml文件吗?

  14. 14

    我应该在存储中存储永不更改(引导)的数据吗?

  15. 15

    我应该在PackageConfig.cmake中修改CMAKE_MODULE_PATH吗

  16. 16

    您应该在JPA中为每个表建立一个存储库吗?

  17. 17

    MVC:应该在Controller或每个Action中实例化存储库吗?

  18. 18

    最佳实践:我应该在数据库中存储哪些信息?

  19. 19

    我是否应该在应用程序的存储库中包含测试框架的源代码?

  20. 20

    我是否应该在应用程序的存储库中包含测试框架的源代码?

  21. 21

    我应该在Android App的内部存储器中删除文件吗?

  22. 22

    我应该在助焊剂存储器中过滤吗?

  23. 23

    我应该在PHP文件中存储application-scope变量吗?

  24. 24

    我应该在Android Studio中存储大量图片吗?

  25. 25

    我应该在此库中(以及在何处)使用volatile吗?

  26. 26

    我应该在sqlite中存储什么颜色?

  27. 27

    我应该在模型中抛出HttpStatus异常吗?

  28. 28

    我应该在交易中包含SELECT吗?

  29. 29

    我应该在表示层中抛出异常吗?

热门标签

归档