В реальном мире контроллерам может понадобиться использовать данные из различных таблиц базы данных и других хранилищ данных.Например:
[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, по сути, представляет собой вспомогательный объект, который создает приятное лицо у поставщика Membership.Т.е. он размещает весь код в одном месте.Например:
Guid userId;
public Guid UserId
{
get
{
if (userId == null)
{
try
{
userId = (Guid) Membership.GetUser().ProviderUserKey;
}
catch { }
}
return userId;
}
}
Одна из проблем заключается в кэшировании такого рода вывода.Я чувствую, что возникает другой вопрос.
РЕДАКТИРОВАТЬ:
Я использую Ninject для DI, и я довольно продан на всех DI, DDD и TDD.Ну вроде.Я тоже стараюсь быть прагматиком ...