Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft.Data.Sqlite'i Dapper ile kullanırken bilmeniz gereken birkaç sınırlama vardır.
Parametreler
SQLite parametre adları büyük/küçük harfe duyarlıdır. SQL'de kullanılan parametre adlarının anonim nesnenin özellikleriyle eşleştiğinden emin olun. Sorun #18861 bu deneyimi geliştirecek.
Dapper ayrıca parametrelerin ön ekini @ kullanmasını bekler. Diğer ön ekler çalışmaz.
var result = connection.ExecuteScalar(
"SELECT @Value",
new { Value = 1 });
Veri türleri
Dapper, SqliteDataReader dizin oluşturucuyu kullanarak değerleri okur. Bu dizin oluşturucunun dönüş türü nesnedir; bu da yalnızca uzun, çift, dize veya bayt[] değerleri döndüreceği anlamına gelir. Daha fazla bilgi için bkz. Veri türleri. Dapper, bunlar ve diğer temel türler arasındaki dönüştürmelerin çoğunu işler. Ne yazık ki, DateTimeOffset, Guid veya TimeSpan'yi desteklemez. Sonuçlarınızda bu türleri kullanmak istiyorsanız tür işleyicileri oluşturun.
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);
}
Sorgulamadan önce tür işleyicilerini eklemeyi unutmayın.
SqlMapper.AddTypeHandler(new DateTimeOffsetHandler());
SqlMapper.AddTypeHandler(new GuidHandler());
SqlMapper.AddTypeHandler(new TimeSpanHandler());