【发布时间】:2011-11-13 06:53:32
【问题描述】:
查看我的控制器(我正在使用依赖注入来管理依赖项):
public RoleController(IRoleRepository roleRepository, ISiteRepository siteRepository, IUserRepository userRepository, IDbContext dbContext)
{
_roleRepository = roleRepository;
_siteRepository = siteRepository;
_userRepository = userRepository;
_dbContext = dbContext;
}
拥有一个具有许多依赖项的类是代码异味吗?对吧?
但是,在我的示例中,我需要在 Role 中关联 Users 和 Sites,然后我需要这些依赖项来执行此关联。
邮件列表中的一些人告诉我,依赖项过多表明可能有问题。但我认为没有其他办法。我分开了我的职责,在那种情况下我不知道如何处理?有什么问题吗?
更新:
我需要存储库和 DbContext,因为 DbContext 是我的 UnitOfWork,存储库不保存。
此示例是一个简单的 CRUD,具有一些其他功能,例如带有 GRID 的视图中的关联。
更新 2:
我正在使用我的 UI 层是 MVC 的架构。
【问题讨论】:
-
通常我只会为聚合根创建存储库,而不是每个实体。我不知道你的域,但我的直觉告诉我你有太多的存储库。此外,为什么需要存储库和 dbcontext?最后,我通常更喜欢在
Service中进行“编排”类型的业务活动,并让服务处理存储库等。控制器的依赖关系就变成了仅对服务的依赖。
标签: c# .net asp.net-mvc dependency-injection domain-driven-design