dedlfix: LINQ-Anweisung

Beitrag lesen

Tach!

Wie würdest du das umschreiben, um das zu erreichen, was du die vorstellst?

Noch einmal: Es fehlt der Zwischenschritt von den Datenbanktabellen zu OOP-Klassen - zumindest die Information darüber, welchen ORM du verwendest. Ohne dass du mir sagst, was du da verwendest, kann ich dir nur theoretisch erklären, wie es funktioniert, und nicht konkret, wo du nachschauen musst, um diese Theorie in der Praxis zu finden. ORM (Object-relational mapping/mapper) ist der Überbegriff für dieses Bindeglied. Konkrete Namen zu solchen ORMs habe ich in der vorigen Antwort genannt.

In deinem obigen Code sind A, B und C Sammlungen von Objekten, wovon jedes Objekt einen Datensatz der Tabelle darstellt. Diese Klassen hat doch irgendjemand erstellt und irgendwie kommen auch die Inhalte in diese Klassen. Ich gehe davon aus, dass diese Klassen Navigation Properties in irgendeiner Form haben, über die man einfach die verbundenen Datensätze zählen kann.

Soweit ich verstanden habe, sollen aber die Tabellen auf jeden Fall miteinander via join verknüpft sein, ansonsten, wie kann man die Zeilen von z.B. B-Tabelle zur ID=5 von der A-Tabelle zählen, wenn die nicht miteinander verknüpft sind?

Wir schauen hier aus der Sicht eines C#-Programmierers und nicht aus der eines Datenbank-Anwenders. Was da wie gejoint werden muss, ist uns normalerweise egal, das macht im besten Fall alles der ORM für uns. Lediglich bei komplexeren Abfragen brauchen wir überhaupt Joins und Gruppierungen selbst zu erstellen - also über LINQ nachzubilden.

Da https://gist.github.com/dedlfix/7301882 hab ich mal ein Beispiel erstellt. Das ist aber nicht wirklich praxisnah, weil ich da alles zu Fuß und ohne ORM erstellt habe (siehe die dortigen Kommentare). In der Praxis ist das alles durch den ORM erledigt und lediglich die Abfrage, die ich auch schon in der ersten Antwort gab, ist für die Problemlösung erforderlich - und natürlich das Wissen, was der ORM da für uns erzeugt hat.

dedlfix.