Ich habe eine Azure-Webanwendung, die als restliche API dient. Dieses Backend definiert die Modelle, die von meinem System verwendet werden: Benutzer, Teams, Projekte, Elemente. Ein Benutzer kann vielen Teams beitreten, und das Team -> Projekt -> Item-Struktur ist ein Grandparent -> Eltern -> Child-Beziehung.Azure WebJobs und Modelle und SQL-Abfragen
Ich möchte eine tägliche E-Mail-Zusammenfassung von Updates für jeden Benutzer einrichten. Ich möchte, dass dies in einem Azure-Web-Job im Hintergrund ausgeführt wird, um den kundenorientierten API-Server nicht zu belasten.
Wenn in der API-Controller das Schreiben von Code, kann ich einfach Abfragen wie folgt schreiben, um alle Einzelteile zu erhalten, die zu einem bestimmten Team gehören (weil die Modelle und ihre hierarchischen Beziehungen in der API definiert sind):
var items = await (from x in db.Items
where x.Project.Team.TeamId == teamId
select x).ToListAsync();
Aber im Web-Job kann ich das nicht - es gibt keine Modelle, von denen man sprechen könnte. Ich sehe ein paar Optionen:
Option A) Irgendwie verwenden (oder erstellen) Sie die Modelle (und den DB-Kontext?) Im Web-Job. Wenn das möglich ist (und keine schreckliche Idee), denke ich, das ist was ich will.
Option B) Machen Sie Frieden mit vielen, ausführlichen SQL-Abfragen im Web-Job. Ich kann die Benutzertabelle nach den Teams abfragen, zu denen sie gehören. Dann kann ich für jedes Team die Projekttabelle nach einer Reihe von Projekten abfragen. Dann kann ich für jedes Projekt die Items-Tabelle für die Items in jedem Projekt abfragen.
Gibt es eine Möglichkeit, eine magische SQL-Abfrage zu erstellen, die effizienter funktioniert als die vielen Aufrufe von Option B an die Datenbank? Ich habe versucht, Dinge wie die folgenden, haben aber keine Arbeitsschema gefunden:
SELECT * FROM Items WHERE Projects WHERE Teams = teamId;
SQL hat '=' für gleich. – jarlh
@jarlh guter Punkt - bearbeitet. Das war sicher nicht das einzige, was mit meiner erfundenen Frage falsch war :) – waffles