Учитывая следующую «базу данных»:
Post -> User
Сущности:
class User
{
public virtual string Name { get; set; }
public virtual IList<Post> Posts { get; set; }
}
class Post
{
public virtual string Title { get; set; }
public virtual User Author { get; set; }
}
И следующий сервисный слой:
class UserService
{
IRepositoryUsers repositoryUsers;
IList<User> GetUsers()
{
return this.repositoryUsers.GetAllUsers();
}
}
Когда я хочу напечатать всех пользователей с соответствующим количеством сообщений, я получаю (не удивительно) проблему выбора N + 1, так как для каждой строки создается выбор, чтобы получать сообщения для пользователей. *
Теперь вот мой вопрос: каков «лучший» способ справиться с этим, поскольку в некоторых случаях я не хочу загружать посты каждого пользователя.
Должен ли я создать столько методов в своем хранилище (и службе), чтобы соответствовать этим сценариям?