У меня есть веб-приложение Azure, работающее в качестве успокоительного API. Этот задний конец определяет модели, используемые моей системой: пользователи, команды, проекты, элементы. Пользователь может присоединиться к многим командам, а команда -> Проект -> Структура элемента - это отношение «Бабушка и дедушка» -> «Родитель -> ребенок».Azure WebJobs и модели и SQL-запросы
Я хочу настроить ежедневный электронный дайджест обновлений для каждого пользователя. Я хочу, чтобы это выполнялось в веб-задаче Azure в фоновом режиме, чтобы не обременять клиента сервером API.
При написании кода в контроллерах АНИ, я могу писать простые запросы, как это, чтобы получить все элементы, которые принадлежат к определенной команде (поскольку модель и их иерархические отношения определены в API):
var items = await (from x in db.Items
where x.Project.Team.TeamId == teamId
select x).ToListAsync();
Однако в работе в Интернете я не могу этого сделать - нет моделей, о которых можно было бы говорить. Я вижу пару вариантов:
Вариант A) Как-то использовать (или воссоздавать) модели (и контекст БД?) В веб-задании. Если это возможно (и не ужасная идея), я думаю, что это то, чего я хочу.
Вариант B) Сделайте мир с множеством подробных SQL-запросов в веб-задании. Я могу запросить таблицу User для того, из каких команд они являются частью. Затем для каждой команды я могу запросить таблицу Project для набора проектов. Затем для каждого проекта я могу запросить таблицу Items для Items в каждом проекте.
Есть ли способ сделать магический SQL-запрос, который работает более эффективно, чем многие вызовы B в базе данных? Я пытался что-то вроде следующего, но не нашли рабочую схему:
SELECT * FROM Items WHERE Projects WHERE Teams = teamId;
SQL имеет '=' для равных. – jarlh
@jarlh хорошая точка - отредактировано. Это, конечно, было не единственное, что было неправильно с моим составленным запросом :) – waffles