我从事ASP.NET已有多年,现在正在赶上MVC和DDD。我了解大多数概念。我正在重新开发一个体育网站。它本质上是CRUD风格的应用程序,但出于学习和灵活性的目的而希望DDD。选择不执行CQRS,虽然我可以看到速度上的好处,但这似乎是过大了。我对Greg Young和其他人有很多了解,但是到了这个阶段,选择几乎是压倒性的,错过了尝试解决问题的目的。
我考虑过的域对象是:
季节,装置,团队,游戏表,比赛,比赛圆形,新闻,新闻
可能的合计为:
季节
治具HAS HomeTeam
治具已有客队
灯具HAS游戏表
灯具HAS比赛清单
(可能是联赛和杯赛)
灯具有季节
灯具有新闻
新闻HAS新闻类别
GameSheet HAS装置
画廊HAS装置
请注意,固定装置和游戏表是双向的,对吗?我知道它可以工作,但是有更好的方法吗?我需要自己显示游戏表以及固定装置。否则,我只能执行FixtureRepo.GetBySeason(season)。[0] .Gamesheet等。
预先感谢您的任何评论。
最佳答案
我担心的是,如果我只想获取游戏表,如果我不直接获取它们,请说GameSheetRepo.GetBySeason(season)之类的话,那么我将必须执行FixtureRepo.GetBySeason,然后检查每个灯具是否存在游戏表。那样做似乎很无效率。但是无论如何我都看不到可以避免使用双向引用,因为GameSheet需要知道它的治具..但是同时如果我有治具,我有时想知道游戏表是否存在
问题是-在您的模型中,不带GameSheet的装置是否有意义?
删除GameSheet时是否应该删除装置?
如果不这样做,则应将其删除-GameSheet是一个聚合根,它拥有Fixtures,您不需要双向关联,因为您永远不会使用不带GameSheet的夹具,创建/修改/删除了Fixtures仅通过GameSheet。
如果GameSheet证明是一个聚合根,但是您需要显示固定装置列表(要求引入双向关联),则不要仅出于表示目的而混淆模型-只需选择具有任何固定装置的GameSheets。 s,选择它们,必要时进行排序并显示。
但是,请彻底过滤掉我刚才所说的内容。
在不知道实际领域的情况下帮助他人真的很困难,我可能会完全误解您。