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.
Pada tahun 2005, Robert Simpson membuat System.Data.SQLite, penyedia SQLite untuk ADO.NET 2.0. Pada tahun 2010, tim SQLite mengambil alih pemeliharaan dan pengembangan proyek. Perlu juga dicatat bahwa tim Mono membuat fork kode pada tahun 2007 sebagai Mono.Data.Sqlite. System.Data.SQLite memiliki riwayat panjang dan telah berevolusi menjadi penyedia ADO.NET yang stabil dan berfungsi lengkap lengkap dengan alat Visual Studio. Rilis baru terus merilis rakitan yang kompatibel dengan semua versi .NET Framework, kembali hingga versi 2.0, dan bahkan .NET Compact Framework 3.5.
Versi pertama .NET Core (dirilis pada 2016) adalah implementasi .NET tunggal, ringan, modern, dan lintas platform. API dan API usang dengan alternatif yang lebih modern sengaja dihapus. ADO.NET tidak menyertakan API Himpunan Data apa pun (termasuk DataTable dan DataAdapter).
Tim Entity Framework agak terbiasa dengan basis kode System.Data.SQLite. Brice Lambson, mantan anggota tim EF, sebelumnya telah membantu tim SQLite menambahkan dukungan untuk Entity Framework versi 5 dan 6. Brice juga bereksperimen dengan implementasinya sendiri dari penyedia ADO.NET SQLite sekitar waktu yang sama ketika .NET Core sedang direncanakan. Setelah diskusi panjang, tim Entity Framework memutuskan untuk membuat Microsoft.Data.Sqlite berdasarkan prototipe Brice. Ini akan memungkinkan mereka untuk menciptakan implementasi ringan dan modern baru yang akan selaras dengan tujuan .NET Core.
Sebagai contoh dari apa yang kita maksud dengan lebih modern, berikut adalah kode untuk membuat fungsi yang didefinisikan pengguna di System.Data.SQLite dan Microsoft.Data.Sqlite.
// System.Data.SQLite
connection.BindFunction(
new SQLiteFunctionAttribute("ceiling", 1, FunctionType.Scalar),
(Func<object[], object>)((object[] args) => Math.Ceiling((double)((object[])args[1])[0])),
null);
// Microsoft.Data.Sqlite
connection.CreateFunction(
"ceiling",
(double arg) => Math.Ceiling(arg));
Pada tahun 2017, .NET Core 2.0 mengalami perubahan strategi. Diputuskan bahwa kompatibilitas dengan .NET Framework sangat penting untuk keberhasilan .NET Core. Banyak API yang dihapus, termasuk API Himpunan Data, ditambahkan kembali. Seperti yang dilakukan untuk banyak orang lain, System.Data.SQLite yang tidak diblokir ini memungkinkannya juga untuk di-port ke .NET Core. Tujuan asli Microsoft.Data.Sqlite menjadi ringan dan modern, namun, masih tetap ada. Lihat batasan ADO.NET untuk detail tentang API ADO.NET yang tidak diterapkan oleh Microsoft.Data.Sqlite.
Ketika fitur baru ditambahkan ke Microsoft.Data.Sqlite, desain System.Data.SQLite diperhitungkan. Kami mencoba, jika memungkinkan, untuk meminimalkan perubahan antara keduanya untuk memudahkan transisi di antara keduanya.
Jenis data
Perbedaan terbesar antara Microsoft.Data.Sqlite dan System.Data.SQLite adalah bagaimana jenis data ditangani. Seperti yang dijelaskan dalam Jenis data, Microsoft.Data.Sqlite tidak mencoba menyembunyikan keunikan SQLite yang mendasarinya, yang memungkinkan string sembarang dapat ditentukan sebagai jenis kolom, dan hanya memiliki empat jenis primitif: INTEGER, REAL, TEXT, dan BLOB.
System.Data.SQLite menerapkan semantik tambahan untuk jenis kolom yang memetakannya langsung ke jenis .NET. Ini memberi penyedia nuansa yang lebih kuat, tetapi memiliki beberapa tepi kasar. Misalnya, mereka harus memperkenalkan pernyataan SQL baru (TYPE) untuk menentukan jenis kolom ekspresi dalam pernyataan SELECT.
String koneksi
Microsoft.Data.Sqlite memiliki lebih sedikit kata kunci string koneksi . Tabel berikut ini memperlihatkan alternatif yang dapat digunakan sebagai gantinya.
| Kata kunci | Alternatif |
|---|---|
| Ukuran Cache | Kirim PRAGMA cache_size = <pages> |
| GagalJikaHilang | Gunakan Mode=ReadWrite |
| FullUri | Menggunakan kata kunci Sumber Data |
| Mode Jurnal | Kirim PRAGMA journal_mode = <mode> |
| Format Warisan | Kirim PRAGMA legacy_file_format = 1 |
| Jumlah Halaman Maks | Kirim PRAGMA max_page_count = <pages> |
| Ukuran Halaman | Kirim PRAGMA page_size = <bytes> |
| Baca Saja | Gunakan Mode=ReadOnly |
| Sinkronis | Kirim PRAGMA synchronous = <mode> |
| Uri | Menggunakan kata kunci Sumber Data |
| Gunakan Encoding UTF-16 | Kirim PRAGMA encoding = 'UTF-16' |
Otorisasi
Microsoft.Data.Sqlite tidak memiliki API yang mengekspos panggilan balik otorisasi SQLite. Gunakan masalah #13835 untuk memberikan umpan balik tentang fitur ini.
Pemberitahuan perubahan data
Microsoft.Data.Sqlite tidak memiliki API yang mengekspos pemberitahuan perubahan data SQLite. Gunakan masalah #13827 untuk memberikan umpan balik tentang fitur ini.
Modul tabel virtual
Microsoft.Data.Sqlite tidak memiliki API apa pun untuk membuat modul tabel virtual. Gunakan masalah #13823 untuk memberikan umpan balik tentang fitur ini.
Lihat juga
- Jenis data
- String koneksi
- Enkripsi
- ADO.NET batasan
- batasan Dapper