none
Custom LINQ Provider RRS feed

  • Frage

  • Hallo Forum

    ich wollte mich mal an einem Custom LINQ Provider versuchen. Ich hatte mir dazu einige Beispiele angeschaut, aber keinen richtigen Roten Faden gefunden. Ich hatte versucht dieses Beispiel "https://weblogs.asp.net/mehfuzh/writing-custom-linq-provider" zu verstehen. Hier hatte dann viele LINQ Anweisungen (z.B. .Contains() oder .Where) nicht funktioniert. Mir kommt es so vor, als dieses Beispiel zu spezifisch aufgebaut ist. Konkret wollte ich einen LINQ To Process (für den Namespace Diagnostic.Process) bauen. Ich weis das es auch einfacherer geht, mir geht es darum zu verstehen wie ein LINQ Custom Provider funktioniert und das wäre für mich eben ein Beispiel.

    Danke und Gruß
    Gerhard

    Dienstag, 20. Dezember 2016 19:41

Alle Antworten

  • Hallo Gerhard,

    Ich bin auf Matt Warrens ausführliche Anleitung LINQ: Building an IQueryable provider, die aus 16 Teilen besteht, gestoßen:
    LINQ: Building an IQueryable provider

    Hier hatte dann viele LINQ Anweisungen (z.B. .Contains() oder .Where) nicht funktioniert.

    Haben die Anweisungen nichts zurückgegeben oder gab es einen Fehler oder haben sie ein unerwartetes Ergebnis zurückgegeben? Sieh Dir in letzterem Fall die Implementierung von SelectMany aus dem siebten Teil an:
    LINQ: Building an IQueryable provider – Part VII

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 21. Dezember 2016 19:37
    Administrator
  • Hallo Dimitar,

    der LINQ Provider wirft verschiedene Exceptions, wenn z.B.

    var q = new PersonContext().Where(p => p.Name.Contains("Born") == true);

    oder

    var q = new PersonContext().Where(p => p.ID == 2);

    kommt gar nichts raus.

    So wie das Beispiel ist funktioniert es nur in diesem Rahmen. Erweiterungen führen nur dazu das nichts mehr funktioniert.

    Das Beispiel das Du gefunden hast, ist zwar recht spannend, ich sehe hier aber keinen "Roten Faden" um daraus einen eigenen LINQ Provider erstellen zu können. Ich habe bisher auch keinen LINQ Provider gefunden die halbwegs ähnlich aufgebaut sind. Es sollte doch möglich sein, eine Art Basisklasse zu schreiben, und dann seinen eigene konkrete Implementierung "dahinter zu hängen".

    Danke und Gruß
    Gerhard

    Donnerstag, 22. Dezember 2016 13:52