领域驱动设计问题

4
我想请您推荐一个解决方案:
我们有一份比赛清单。
每个比赛都有一个定义好的费用,参与者必须支付该费用。
我们有参与者。
我需要知道在比赛中的参与者是否已经支付了费用。我正在考虑两种解决方案,并且它必须是领域驱动设计中最合适的解决方案。 第一种是在比赛中创建一个字典,而不是列表,该字典将是<参与者,布尔值>类型。 第二种是创建一个不同的类,该类具有2个字段:参与者和feePaid。在比赛中,我将拥有该新类对象的列表。
谢谢

也许可以发布你尝试解决问题的方案? - Mitch Wheat
它尚未编码。我正在寻找概念。最好的方法是什么? 我可以重述为:连接参与者和知识的最佳设计是什么,以确定特定参与者是否支付了特定比赛的费用。 - gljivar
2个回答

6
听起来像是一个典型的多对多关系。我会用一个Entry关联类来建模,如下所示:
class Participator {
}
class Competition {
    Currency fee
}
class Entry {
    Competition competition
    Participator participator
    Boolean feePaid
}

5
我处理这个问题的方法是���建竞赛、参与者和注册表。参与者会为竞赛注册,从而创建一个注册表。注册表包括竞赛ID、参与者ID、一个标志来指示是否已经支付费用,以及任何其他的注册特定数据(例如注册日期)。在数据库中,这将被建模为“连接表”(带有额外的数据)。在应用程序端,参与者将拥有一个注册表列表,每个注册表将有一个关联的参与者和竞赛。同样,每个竞赛也将拥有一个注册表列表。

我不确定在领域驱动开发中这样做是否正确。在DDD中,您可以处理对象,而仅具有ID和其他信息的对象并不好。我知道这可能是数据库中的标准解决方案。 - gljivar
我不同意,我的模型通常为需要在数据库中持久化的任何对象都有一个ID,因为我需要一些方式来映射通常的IRepository工作之后的事情。在我看来,DDD更多地与试图使用业务统一语言说话有关,而不是试图排除ID属性。 - Toran Billups

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