我已经做了很多年的ASP.NET,现在正在追赶MVC和DDD。我理解大多数概念。我正在重新开发一个体育网站的网站。它本质上是一个CRUD风格的应用程序,但希望DDD用于学习和灵活性目的。虽然我可以看到速度优势,但选择不做CQRS似乎有点矫枉过正。我跟随了很多关于Greg Young和其他人的事情,但它已经到了选项几乎压倒性的阶段,并且没有尝试解决问题。
我想到的域对象是:
季节,夹具,团队,游戏表,竞争,CompetitionRound,新闻,NewsCategory
可能的聚合是:
季
灯具有 HomeTeam
灯具有新闻
新闻有 NewsCategory
GameSheet 有灯具
图库有灯具
请注意夹具和游戏表都是双向的,这是对的吗?我知道它会起作用但有更好的方法吗?我需要自己和固定装置显示游戏床单。否则我可以做FixtureRepo.GetBySeason(赛季)。[0] .Gamesheet等..
提前感谢任何评论。
答案 0 :(得分:0)
我担心的是,如果我想要获取游戏表,如果我不直接得到它们,那么说像GameSheetRepo.GetBySeason(季节)我将不得不做FixtureRepo.GetBySeason,然后检查是否存在每个游戏表夹具......看起来非常无精打采这样做。但我无论如何都看不到你可以避免使用双向引用,因为GameSheet需要知道它的Fixture ..但同时如果我有一个夹具我想知道是否有时存在游戏表
问题是 - 对于您的模型中的游戏资料表,Fixtures是否有意义?
删除GameSheet时是否应删除灯具?
如果他们没有并且应该删除 - 可能是GameSheet是一个聚合根,它拥有Fixtures,你不需要双向关联,因为你永远不会使用没有GameSheet的夹具,Fixtures被创建/仅通过GameSheet修改/删除。
如果GameSheet原来是一个聚合根但是你需要显示一个灯具列表(那种要求引入双向关联),不要混淆你的模型因为仅仅是表示 - 只需选择得到的GameSheets任何Fixture`s,选择它们,必要时进行排序并显示。
但过滤掉我刚才所说的内容 在不了解真实领域的情况下帮助某人真的很难,我可能完全误解了你。