Об'єкт-запит () — шаблон проєктування, який дозволяє приховати SQL за допомогою об'єктів.

Опис

Використання мови запитів в коді призводить до того, що код стає тісно пов'язаним зі сховищем даним. Та при зміні структури сховища необхідно міняти код. Треба розв'язувати проблеми інкапсуляції схеми бази даних, підтримки роботи із декількома сховищами та оптимізації кількості запитів.

Рішенням буде створити інтерпретатор, який дозволить працювати зі сховищем як із колекцією об'єктів, та транслюватиме команди мовою запитів конкретного сховища.

Застосування

В Entity Framework даний шаблон реалізується через IQueryable.

Реалізація

Нехай у сховищі знаходяться об'єкти даного типу.

Тоді примітивна реалізація цього шаблону матиме наступний вигляд.

У коді прихована структура сховища.

Див. також SQL Інтерпретатор (шаблон проєктування) Специфікація (шаблон проєктування)

Джерела Query Object