Я использую два репозитория в своем CommentService.Паттерн репозитория - Объединение данных из двух таблиц
_commentRepository
_userRepository
Использование функции _commentRepository.GetAll() я получаю список всех моих комментариев со следующей информацией: [Id], [Содержание], [UserId].
Я пытаюсь создать список со всеми комментариями и некоторыми соответствующими данными пользователя, доступными для _userRepository, и сохранить их в DTO.
public ListOutput<CommentUserDto> GetCommentsWithUserInformation()
{
var comments = _commentRepository.GetAll();
// TODO: Add comment and user information to CommentUserDto.
return new ListOutput<CommentUserDto>
{
Items = Mapper.Map<List<CommentUserDto>>(comments)
};
}
Как это сделать?
Некоторые возможные идеи, которые я нашел:
- Создание _commentUserRepository
- Использование включают каким-то образом объединить эти две таблицы (я использую EF)
- Создание диспетчера в моем слое домена, который принимает забота об объединении логики.
EDIT:
комментарий модель:
public class Comment
{
public virtual string Content { get; set; }
public virtual DateTime CreationTime { get; set; }
public virtual long UserId { get; set; } // Id of User that posted Comment (always filled in)
}
модель Пользователь:
public class User {
public virtual string Name { get; set; }
public virtual string Surname { get; set; }
public virtual string Email { get; set; }
public virtual string Password { get; set; }
}
CommentUserDto: // имеющая класс для представлений
public class CommentUserDto {
public string Content { get; set; } // from comment
public DateTime CreationTime { get; set; } // from comment
public string PosterName { get; set; } // from user
public string PosterSurname { get; set; } // from user
}
Вы используете entityframework? – freshbm
Мне лично нравится иметь репозиторий каждый для комментариев и пользователя, а затем поверх репозиториев. У меня есть мои классы обслуживания, которые дают мне объединенный объект из обоих этих репозиториев. Если вам небезразлична структура Entity, Include также является опцией – Yogi
Да, я (уточню вопрос). – Sam