Ich habe eine Handvoll von benutzerdefinierten SQLite-Funktionen in C # mit System.Data.SQLite.SQLiteFunction erstellt. Es funktioniert hervorragend, wenn SQLiteDataAdapter zum Ausführen von Abfragen verwendet wird, es funktioniert jedoch nicht, wenn ich Linq to SQL verwende, bekomme ich Fehler, die besagen, dass die Funktion nicht existiert .
Ich schätze, die Schlussfolgerung lautet: Wie kann ich Custom SQLiteFunctions in Linq to SQL verwenden? Entweder, indem man sie so lädt, wie sie sollen oder indem man den Quellcode von SQLite.Net so dass sie Teil der DLL sind?
Hinweis: Ich verstehe Entity Framework ist bevorzugt, dies ist Legacy-Anwendung, und ich habe nicht die Option, dies zu ändern. Ich habe versucht, die Funktionen manuell an die DataContext.Connection zu binden, keine Würfel.
Hintergrund zu einem Versuch, System.Data.SQLite zu ändern: Ich habe versucht, den Quellcode herunterzuladen, kann ich erfolgreich aus der Quelle erstellen, aber der Quellcode ist ein wenig rätselhaft für mich.
Das Ziel davon war, zu versuchen, meine benutzerdefinierten Funktionen in der System.Data.SQLite.dll zu bauen, anstatt sich auf das automatische Laden durch Reflektion zu verlassen.
Gerade in diesem Moment fand ich diesen netten Ausschnitt von dieser Frage
%Vor%Aber ich habe nicht herausgefunden, wie man es benutzt. Jetzt gibt es eine SQLiteConnection.BindFunction-Methode. Es ist hässlich, also habe ich eine kleine Erweiterungsmethode gemacht:
%Vor%Und jetzt müssen Sie nur
%Vor%Nun, wie Sie es in LINQ to SQL tun können, weiß ich nicht genau, weil ich meine eigene SQL in LINQ IQueryProvider habe. Dies können Sie mit den grundlegenden IDbConnection-, IDbCommand-, IDbDataParameter- und IDataReader-Schnittstellen und Ihrer benutzerdefinierten SQLiteFunction tun.
Tags und Links c# sqlite linq-to-sql system.data.sqlite