Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ada beberapa batasan yang harus Anda ketahui saat menggunakan Microsoft.Data.Sqlite dengan Dapper.
Parameter-parameternya
Nama parameter SQLite peka huruf besar/kecil. Pastikan bahwa nama parameter yang digunakan dalam SQL cocok dengan kasus properti objek anonim. Masalah #18861 akan meningkatkan pengalaman ini.
Dapper juga mengharapkan parameter untuk menggunakan awalan @ . Awalan lain tidak akan berfungsi.
var result = connection.ExecuteScalar(
"SELECT @Value",
new { Value = 1 });
Jenis data
Dapper membaca nilai menggunakan pengindeks SqliteDataReader. Jenis pengembalian pengindeks ini adalah objek, yang berarti hanya akan mengembalikan nilai panjang, ganda, string, atau byte[]. Untuk informasi selengkapnya, lihat Jenis data. Dapper menangani sebagian besar konversi antara ini dan jenis primitif lainnya. Sayangnya, itu tidak menangani DateTimeOffset, , Guidatau TimeSpan. Buat pengelola jenis jika Anda ingin menggunakan jenis ini dalam hasil Anda.
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);
}
Jangan lupa untuk menambahkan pengelola tipe sebelum melakukan kueri.
SqlMapper.AddTypeHandler(new DateTimeOffsetHandler());
SqlMapper.AddTypeHandler(new GuidHandler());
SqlMapper.AddTypeHandler(new TimeSpanHandler());
Lihat juga
- Jenis data
- Batasan asinkron