Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Es gibt einige Einschränkungen, die Sie bei der Verwendung von Microsoft.Data.Sqlite mit Dapper beachten sollten.
Die Parameter
SQLite-Parameternamen sind case-sensitive. Stellen Sie sicher, dass die in SQL verwendeten Parameternamen mit der Schreibweise der Eigenschaften des anonymen Objekts übereinstimmen. Ausgabe Nr. 18861 wird diese Erfahrung verbessern.
Dapper erwartet auch, dass Parameter das @
Präfix verwenden. Andere Präfixe funktionieren nicht.
var result = connection.ExecuteScalar(
"SELECT @Value",
new { Value = 1 });
Datentypen
Dapper liest Werte mithilfe des SqliteDataReader-Indexers vor. Der Rückgabetyp dieses Indexers ist objekt, was bedeutet, dass er nur lange, doppelte, Zeichenfolgen- oder Byte[]-Werte zurückgibt. Weitere Informationen finden Sie unter Datentypen. Dapper behandelt die meisten Konvertierungen zwischen diesen und anderen Grundtypen. Leider werden DateTimeOffset
, Guid
und TimeSpan
nicht verwendet. Erstellen Sie Typhandler, wenn Sie diese Typen in Ihren Ergebnissen verwenden möchten.
abstract class SqliteTypeHandler<T> : SqlMapper.TypeHandler<T>
{
// Parameters are converted by Microsoft.Data.Sqlite
public override void SetValue(IDbDataParameter parameter, T? value)
=> parameter.Value = value;
}
class DateTimeOffsetHandler : SqliteTypeHandler<DateTimeOffset>
{
public override DateTimeOffset Parse(object value)
=> DateTimeOffset.Parse((string)value);
}
class GuidHandler : SqliteTypeHandler<Guid>
{
public override Guid Parse(object value)
=> Guid.Parse((string)value);
}
class TimeSpanHandler : SqliteTypeHandler<TimeSpan>
{
public override TimeSpan Parse(object value)
=> TimeSpan.Parse((string)value);
}
Vergessen Sie nicht, die Typhandler vor der Abfrage hinzuzufügen.
SqlMapper.AddTypeHandler(new DateTimeOffsetHandler());
SqlMapper.AddTypeHandler(new GuidHandler());
SqlMapper.AddTypeHandler(new TimeSpanHandler());