System.Data.Sqlite 1.0.99 GUID-Vergleich funktioniert nicht

9

Ich verwende System.Data.Sqlite 1.0.99 von C #, mit dem Sie db mit EF aufrufen können. Ich konfrontiert mit dem Problem bei der Auswahl von FirstOrDefault by Guid es return null (aber Zeile mit solchen GUID existiert in der Datenbank):

%Vor%

Gefunden einige Informationen, dass dies bekannt Problem ist und es in 1.0.95 behoben wurde, aber in 1.0.97 und den folgenden zwei Lösungen wieder gebrochen:

Lösung 1: Setzen Sie die BinaryGUID-Eigenschaft für die Verbindungszeichenfolge auf "true":

%Vor%

Lösung 2: Setzen Sie die nächste Umgebungsvariable (bevor Sie die Verbindung herstellen):

%Vor%

Lösung 2 funktioniert, weil (von SQLite Site):

AppendManifestToken_SQLiteProviderManifest - Wenn diese Umgebungsvariable auf [irgendwas] gesetzt ist, wird sie von der Klasse System.Data.SQLite.Linq.SQLiteProviderManifest (und dem System) verwendet. Data.SQLite.EF6.SQLiteProviderManifest -Klasse), um zukünftige Provider-Manifest-Tokens zu ändern, indem der Wert der Umgebungsvariablen an das vorhandene Provider-Manifest-Token angehängt wird, falls vorhanden. Damit das Konstrukt-Manifest-Token syntaktisch korrekt ist, muss der Wert der Umgebungsvariable [angehängt] typischerweise mit einem Semikolon beginnen.

Lösung 1 funktioniert nicht für mich, da sie, wie ich verstehe, nur auf System.Data.SQLite.Linq.SQLiteProviderManifest wirkt.

Die Frage: Gibt es eine Lösung, um dieses Verhalten zu beheben, anstatt die Umgebungsvariable zu setzen?

    
Vasyl Senko 27.01.2016, 10:19
quelle

1 Antwort

0

Würden Sie versuchen, SingleorDefault anstelle von FirstorDefault zu verwenden? LINQ: Wann SingleOrDefault vs. FirstOrDefault () mit verwenden Filterkriterien

Beispiel: var user = context.Users.SingleorDefault (x = & gt; x.Id == userId);

    
Melih Yilman 10.08.2017 11:59
quelle

Tags und Links