0

我正在尝试学习 DDD,所以请多多包涵。假设我有一个名为问题的聚合。它有一个 StatusId 属性。这个状态可以是ie。打开、关闭……它存储在一个名为 Statuses 的数据库表中。(这是因为特定用户可以有特定的状态,所以我希望用户能够添加新的状态)现在,我在问题聚合中创建了一个这样的方法: public static void SubmitIssue(Guid projectId, string issueTitle, string description ...)

此方法使用请求创建新问题。参数,然后我需要将其设置为正确的状态。但是状态是在数据库中指定的。当我在做业务逻辑时必须从数据库中获取数据时,如何处理这种情况,而这些业务逻辑根本不能对联进行数据库访问?请帮忙

4

1 回答 1

0

您的问题不仅仅是 DDD 问题。这真的是关于 OO 设计。问题是您不想要一个会迫使您在所有地方做出决定的枚举。- 乱扔代码,带有丑陋的开关和 if 语句。

对此没有简单或准确的答案。

我会尝试做什么:

你有问题类(可以是不同的类型),这意味着你可以继承和实现基于该类型的具体。不过很重要!如果问题可以从一种类型更改为另一种类型,则对问题类的继承是错误的路线。在这种情况下,您需要将这些类型(以及它们应用的业务规则)的逻辑差异移到 IssueType 类中,并且您的 Issue 类必须使用相关的 IssueType 构建。

鲍勃叔叔有一个很好的例子,与他在书中讨论的问题非常相似:http: //www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445

当然,他在示例中没有谈到 DB,但这就是 DDD 的重点。

我有 PDF 版本,所以页面可能略有不同。: 第 454 到 456 页讨论了具体的用例。

真的希望这会有所帮助。- 几乎希望我在一个团队中与你一起工作并且能够解决它。

于 2015-02-17T19:56:30.827 回答