Ich verwende Dapper, SQLite auf C# coreclr.Dapper löst die Ausnahme aus, wenn Sie zum zweiten Mal eine Abfrage ausführen, wenn das Schema für verschiedene Ergebnisse
public async Task<UserPoco> GetFromEmail(string email)
{
email = email.ToLower();
using (var connection = new SqliteConnection(_configSettings.ConnectionString))
{
connection.Open();
var query = $"SELECT * FROM users WHERE EmailAddress = '{email}';";
var result = await connection.QueryAsync<UserPoco>(query);
return result.FirstOrDefault();
}
}
Diese einfache Methode löst eine Ausnahme aus, wenn die SQL-Abfrage zu irgendeinem Zeitpunkt keine Ergebnisse findet und das nächste Mal, wenn sie ausgeführt wird, Ergebnisse findet. Es wirft: Kann nicht Objekt des Typs "System.Int64" zu "System.Int32" eingeben. Fehler Parsing Spalte 0 (UserId = 86 - Int64)
Ich bin ziemlich sicher, dass es nicht mit den Datentypen verwandt ist. Das UserPoco hat eine lange UserId-Eigenschaft und die Benutzer der DB-Tabelle haben eine UserId vom Typ INTEGER, die empfohlen wird, bigint (long) zu speichern. Wenn zum Beispiel die Methode immer Daten findet, wird es wie ein Zauber wirken. Ich glaube an die Tatsache, dass Dapper das Ergebnis Schema jeder Abfrage-Caches es läuft und löst eine Ausnahme, wenn diese Schemaänderungen für die gleiche Abfrage, wie sie auf weisen: https://github.com/janjosephlim/dapper-dot-net/issues/124
Was ich nicht verstehe, Wie kommt es, dass ich keine weiteren Informationen darüber finden kann oder dass sich mehr Leute über ein solches häufiges Szenario beschweren: Ich führe einfach eine sehr einfache Abfrage durch, die Ergebnisse zurückbringen kann oder nicht.
Was fehlt mir?