Я занят новым проектом и работаю над своим уровнем хранилища.Это будет мой второй проект с использованием шаблона репозитория.Я читал книгу Скотта Миллета Профессиональные шаблоны проектирования ASP.NET При ссылке на учебный пример, приведенный в книге, Скотт использовал шаблон объекта запроса в своих интерфейсах репозитория.В моем предыдущем проекте я использовал LINQ для этой цели, и он работал хорошо.
Мой вопрос заключается в следующем: Каковы преимущества и недостатки использования реализации Query Object Pattern по сравнению с использованием LINQ в вашем хранилище?
Вот 2 сценария, которые иллюстрируют 2 разных подхода:
1.Подход к объекту запроса
public interface IReadOnlyRepository<T, TId> where T : IAggregateRoot
{
T FindBy(TId id);
IEnumerable<T> FindAll();
IEnumerable<T> FindBy(Query query);
}
2.Подход LINQ
public interface IReadOnlyRepository<T, TId> where T : IAggregateRoot
{
T FindBy(TId id);
IQueryable<T> FindAll();
IQueryable<T> FindBy(Expression<Func<T, bool>> query);
}
Любой вклад будет полезным.