2010-07-23 185 views
0

我仍然在学习DDD。我正在编写一个ASP.NET MVC应用程序,我有几个下拉菜单,我需要从数据库中填充。我为每种类型创建了映射实体(状态,结果等)填充下拉列表/选择列表

我无法弄清楚的是我应该从哪里获取数据。为每种类型的选择列表创建一个单独的存储库时,如果必须将大量存储库注入MVC​​控制器,就会感觉很痛苦。此外,所有这些选择列表都是只读的,因此每个选择列表的存储库看起来过度。为所有选择列表类型创建单个超级存储库看起来也不正确,因为存储库应该像一个一个实体类型的集合。

我一直在阅读一些有关CQS和报告层的内容,但我不知道如何正确实施。

回答

1

首先 - 如果您对DDD感觉不舒服,甚至不要看CQRS。我的意思是 - 看看,但不要试图用它来实现真正的项目。然而。

当我们没有从应用程序的写入端分离读取时,存储库会被混淆,导致一些混合的责任。

从一个角度来看 - 它负责持久化聚合根,从其他角度 - 它也负责报告。

这意味着 - 如果存储库包含仅用于演示目的检索数据的功能,则没有任何错误(至少在我的脑海中)。

在你的情况 - 我只是使用来自仓库的数据建立下拉菜单。所以 - 产品下拉列表将从ProductRepository.Find(bySomething)(或者在我决定使用通用存储库的情况下为Repository<Product>(bySomething))获取数据。

P.s.被警告说DDD对模式没什么太多要求。它更多的是关于无处不在的语言,并使你的领域模型明确。