Не совсем уверен, что вы подразумеваете под Aggregate Root.Насколько я знаю, шаблон репозитория обычно работает с кластером объектов, которые являются частью вашей доменной модели, в DDD это обычно называется aggregates .То, как вы получаете доступ к своим объектам из репозитория, зависит от того, какой уровень доступа к данным вы используете в своем приложении.Обычно я использую NHibernate as и ORM, который управляет всеми отношениями между моими классами и таблицами базы данных, поэтому при реализации репозитория я могу использовать любые объекты, которые являются частью моего домена, и обращаться к ним по мере необходимости.
Здесьпример хранилища, в котором используются разные объекты:
public interface IStoryRepository : IRepository<Story>
{
List<Image> GetStoryImage(int id);
List<FacebookUser> GetFbUserById(string id);
}
public class StoryRepository : Repository<Story>, IStoryRepository
{
public List<Image> GetStoryImage(int id)
{
var criteria = Session.CreateCriteria(typeof(Image))
.Add(Restrictions.Eq("Id", id))
.SetResultTransformer(new DistinctRootEntityResultTransformer());
return criteria.List<Image>() as List<Image>;
}
public List<FacebookUser> GetFbUserById(string id)
{
var criteria = Session.CreateCriteria(typeof(FacebookUser))
.Add(Restrictions.Eq("Id", id))
.SetResultTransformer(new DistinctRootEntityResultTransformer());
return criteria.List<FacebookUser>() as List<FacebookUser>;
}
}