【发布时间】:2010-11-24 17:18:50
【问题描述】:
在现实世界中,控制器可能需要使用来自各种数据库表和其他数据存储的数据。例如:
[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;
}
所以:
我应该为每个表使用一个存储库吗?
我想这就是聚合概念发挥作用的地方?每个聚合是否应该有一个存储库?
我是否只需将所需数量的存储库添加到控制器的构造函数中?
这是否表明我的设计有误?
注意:
IMember 接口本质上表示一个帮助器对象,它为成员资格提供者提供了一个漂亮的面孔。即,它将所有代码放在一个地方。例如:
Guid userId;
public Guid UserId
{
get
{
if (userId == null)
{
try
{
userId = (Guid) Membership.GetUser().ProviderUserKey;
}
catch { }
}
return userId;
}
}
其中一个问题肯定是缓存这种输出。我能感觉到另一个问题。
编辑:
我将 Ninject 用于 DI,并且在整个 DI、DDD 和 TDD 方面都非常畅销。嗯,有点。我也努力做一个实用主义者……
【问题讨论】:
-
Repository pattern: One repository class for each entity? 的可能重复项 - 每个月左右都会弹出。
-
@jfar - 所以你投票关闭某个重复的东西,然后你在这里发布你在那个重复的问题(逐字)中得到的完全相同的答案?它是如何工作的??
-
@RPM1984 - 因为骗子很少再关闭,我不希望 qstarins 回答是这个问题中唯一的一个。
标签: asp.net-mvc repository-pattern repository ddd-repositories multiple-repositories