dedlfix: LINQ

Beitrag lesen

Tach!

vielen Dank. Jetzt klappt es.Ich verstehe aber nicht, warum ich mich bei meiner LINQ-Anweisung außerhalb von Linq to Entities befinde.

LINQ ist erst einmal nur ein Konzept, Abfragen auf verschiedene Arten von Daten in einer möglichst einheitlichen Art und Weise zu gestalten. Das ist also quasi eine Daten(bank)abstraktionsschicht, nur dass sie eben auf alle möglichen Datenquellen angewendet werden kann. Im einfachsten Fall ist die Datenquelle ein IEnumerable<T>. Komplexer wird es, wenn eine Datenbank anzuzapfen ist. Beim IEnumerable arbeitet man direkt mit den Daten, Datenbank setzt es die LINQ-Methodenaufrufe in SQL-Statements um und sendet diese zum DBMS. Das klappt nicht in jedem Fall, weswegen es bei einigen LINQ-Methoden zum NotSupported kommt.
Bei LINQ-to-Datenbenk/oder EF werden die Methoden nicht direkt hintereinander ausgeführt, sondern sie werden analysiert, um das SQL-Statement draus zu erstellen. Erst wenn du über die Datenmenge iterieren möchtest oder ToLIST() aufrufst, wird das SQL-Statement ausgeführt und die Datensätze in den Speicher geholt (zum Beispiel als List<T> liegen sie dort). Wenn du nun weiter LINQst, arbeitest du mit den Funktionen, die auf IEnumerable<T> aufsetzen. Damit greifst du nicht mehr auf das EF zu und bist nicht mehr in der LINQ-to-EF-Umsetzung.

dedlfix.