在现实世界中,控制器可能需要使用来自各种数据库表和其他数据存储的数据。例如:
[Authorize]
public class MembersController : Controller
{
ICourseRepository repCourse;
IUserCourseRepository repUserCourse;
IMember member;
public MembersController(ICourseRepository repCourse, IUserCourseRepository repUserCourse, IMember member)
{
this.repCourse = repCourse;
this.repUserCourse = repUserCourse;
this.member = member;
}
所以:
我应该为每个表使用存储库吗?
我想这就是聚合概念发挥作用的地方?我应该每个聚合有一个存储库吗?
我是否只需向 Controller 的构造函数中添加所需数量的存储库?
这是否表明我的设计是错误的?
笔记:
IMember 接口本质上代表了一个帮助器对象,它为成员资格提供者提供了一个漂亮的面孔。即,它将所有代码放在一个地方。例如:
Guid userId;
public Guid UserId
{
get
{
if (userId == null)
{
try
{
userId = (Guid) Membership.GetUser().ProviderUserKey;
}
catch { }
}
return userId;
}
}
一个问题肯定是缓存这种输出。我能感觉到另一个问题要来了。
编辑:
我将 Ninject 用于 DI,并且在整个 DI、DDD 和 TDD 方面都非常畅销。嗯,有点。我也努力做一个实用主义者...