Verwendetes Datenbanksystem: <SQL Server>
Hallo Leute,
ich schaue mir gerade das Entity Framework an.
Es soll ein Projekt darauf umgestellt werden.
Nur sind in diesem Projekt leider sehr großen und auch umfangreiche SQL Abfragen verbaut.
Mit diversen SupSelects, verschachtelte Joins u.s.w.
Wie sollte man da ran gehen?
Vielleicht habt ihr ein paar Denkanstösse, danke schon mal.
"Sehr groß" und "sehr komplex" ist alles relativ.
Was für dich sehr groß sein kann, ist für jemand anderes Mini - weil er noch größere Abfragen hat.
Generell gibts viele Best Practises zu EF Core abfragen.
Schau Dir einfach mal verschiedene Tutorials an, zB vom EF PM Jeremy Likness.
Letzten Endes ist das A und O für jeder Art von Abfragen mit Linq das Verständnis von Expressions sehr wichtig.
Je komplexer, desto wichtiger.
EF bzw. EF Core ist aber ingesamt durchaus komplex und Du kannst an vielen Stellen Performance verlieren oder Probleme schaffen.
Du wirst einige Zeit brauchen (und viel lesen müssen), bis Du EF beherrschst; mit "kurz anschauen" wirds nur für die Grundlagen reichen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
hatte viel um die Ohren, daher kann ich erst jetzt Antworten.
Ja ich schaue mir die Sachen gerade an.
Gruß
ProgrammierNoob
Du hast zwar den SQL Code wieder gelöscht, aber hatte ihn davor noch gesehen.
Sowohl die .NET wie auch die SQL Community dürfte bei dem SQL Code den Konsenz haben, dass es alles andere als eine komplexe Abfrage war.
Das waren ja "nur" ein Select mit 3 Sub-Selects und Basis-SQL Befehle; in Umfang und Inhalt also nicht wirklich komplex.
Wäre also problemlos mit den Basis-Linq Funktionalitäten umsetzbar. (Ich hab daher auch das Komplex aus dem Titel entfernt, weil es das wirklich nicht ist.
Auf den auch gelöschten Zusatz, dass Du Stored Procs verwenden kannst:
Klar, Du kannst die Logik auch komplett in die Datenbank verlagern; hat halt enorm viele Nachteile, wenn Du eh schon ein ORM hast.
Davon abgesehen sind Stored Procs primär Funktionen, keine Abfragen; verwendet man also dann, wenn man ohne Roundtrip zum Client etwas ausführen will.
Für Abfragen verwendet man primär Views, die aber 0 % Performance-Vorteile zu ORM-Selects haben.
Views sind nur dann schneller, wenn man sie indiziert.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code