这个DDD应用程序中的聚合是哪些?

时间:2010-06-16 14:49:06

标签: c# .net model-view-controller domain-driven-design

我已经做了很多年的ASP.NET,现在正在追赶MVC和DDD。我理解大多数概念。我正在重新开发一个体育网站的网站。它本质上是一个CRUD风格的应用程序,但希望DDD用于学习和灵活性目的。虽然我可以看到速度优势,但选择不做CQRS似乎有点矫枉过正。我跟随了很多关于Greg Young和其他人的事情,但它已经到了选项几乎压倒性的阶段,并且没有尝试解决问题。

我想到的域对象是:

季节,夹具,团队,游戏表,竞争,CompetitionRound,新闻,NewsCategory

可能的聚合是:

  • 灯具 HomeTeam

  • 灯具 AwayTeam
  • 灯具游戏表
  • 灯具 HAS CompetitionRound 列表 (可能是联赛和杯赛)
  • 灯具季节
  • 灯具新闻

  • 新闻 NewsCategory

  • GameSheet 灯具

  • 图库灯具

请注意夹具和游戏表都是双向的,这是对的吗?我知道它会起作用但有更好的方法吗?我需要自己和固定装置显示游戏床单。否则我可以做FixtureRepo.GetBySeason(赛季)。[0] .Gamesheet等..

提前感谢任何评论。

1 个答案:

答案 0 :(得分:0)

  

我担心的是,如果我想要获取游戏表,如果我不直接得到它们,那么说像GameSheetRepo.GetBySeason(季节)我将不得不做FixtureRepo.GetBySeason,然后检查是否存在每个游戏表夹具......看起来非常无精打采这样做。但我无论如何都看不到你可以避免使用双向引用,因为GameSheet需要知道它的Fixture ..但同时如果我有一个夹具我想知道是否有时存在游戏表

问题是 - 对于您的模型中的游戏资料表,Fixtures是否有意义?

删除GameSheet时是否应删除灯具?

如果他们没有并且应该删除 - 可能是GameSheet是一个聚合根,它拥有Fixtures,你不需要双向关联,因为你永远不会使用没有GameSheet的夹具,Fixtures被创建/仅通过GameSheet修改/删除。

如果GameSheet原来是一个聚合根但是你需要显示一个灯具列表(那种要求引入双向关联),不要混淆你的模型因为仅仅是表示 - 只需选择得到的GameSheets任何Fixture`s,选择它们,必要时进行排序并显示。


但过滤掉我刚才所说的内容 在不了解真实领域的情况下帮助某人真的很难,我可能完全误解了你。