填充下拉列表/选择列表

时间:2010-07-23 07:40:06

标签: asp.net-mvc nhibernate domain-driven-design

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

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

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

1 个答案:

答案 0 :(得分:1)

首先 - 如果您对DDD不满意,甚至不要看CQRS。我的意思是 - 看看,但不要试图用它来实现真正的项目。爱好。

当我们不将我们的应用程序的读取和写入方面分开时,存储库会因混合责任而变得混乱。

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

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

在您的情况下 - 我将使用来自相应存储库的数据构建下拉列表。所以 - 产品下拉列表将从ProductRepository.Find(bySomething)(或Repository<Product>(bySomething)获取数据,以防我决定使用通用存储库。)

P.S。请注意,DDD并不是关于模式的。它更多的是无处不在的语言,并使您的域模型明确。