Bernhard  GrojerLINQ Provider - Vom Ausdruck zum Ergebnis



SQL Server, Webservice, WCF, Dateisystem, CSV Dateien, XML, Logs, ...

... überall Daten. Zugreifen? Mal so mal so. Immer andere Technologien erlernen um an die Daten ranzukommen.

Alternativen? Natürlich!: LINQ Provider.

Was müssen wir dafür tun? Eigentlich eine zentrale Stelle anfassen ...

ProviderModel 

... um zwischen der LINQ Engine und dem Datenspeicher unsere Logik implementieren. Doch leider ist die Aufgabe nicht ganz trivial und zwingt uns einige Tasks zu erledigen.

Dafür müssen wir zuerst abstecken welche Aufgaben wir zu erledigen sowie welche Voraussetzungen wir habe:

  • API für den Datenzugriff
  • Klasse für Abfrage: IQueryable<T> (oder IOrderedQueryable<T>, dass IQueryable<T> implementiert)
  • Klasse für den Provider: IQueryProvider
  • Datencontext erstellen der uns Strongly-Typed Zugriff auf die Datenquelle erlaubt.
Einen Teil der Funktionalität können wir in Basisklassen ablegen.
public class Query<T>: IOrderedQueryable<T>, IQueryable,IOrderedQueryable 
    {
        QueryProvider _Provider;
        Expression _Expression;
    }
public abstract class QueryProvider : IQueryProvider
    {
    }

Query<T> bietet uns somit bereits eine generische Basis für die weitere Implementierung unserer Datenquellen.
Die QueryProvider Basisklassen erlaubt uns die Implementierung für das parsen und erstellen d. Abfrage, sowie das Weiterreichen für die Ausführung vorzunehmen.

Basierend auf dieser Grundfunktionalität können wir nun unsere eigentliche Aufgabestellung umsetzen. Mehr dazu jedoch im 2ten Teil. Stay tuned.

Sie möchten mehr wissen zum Thema? Auf der ADC08 gibt es eine Session von mir:

ADCTeaser



Kategorien: 24.09.2008 13:17:37


 


Neuen Kommentar einfügen:

  Titel:   
  Name:
  E-Mail:
  Kommentar:

 
 


Kommentare




© Copyright 2008 ppedv AG