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.
2005 yılında Robert Simpson, ADO.NET 2.0 için bir SQLite sağlayıcısı olan System.Data.SQLite'i oluşturdu. 2010 yılında projenin bakım ve geliştirmesini SQLite ekibi üstlemiştir. Mono ekibinin kodu 2007'de Mono.Data.Sqlite olarak çatalladığını da belirtmek gerekir. System.Data.SQLite uzun bir geçmişe sahiptir ve Visual Studio araçlarıyla birlikte kararlı ve tam özellikli bir ADO.NET sağlayıcısına dönüşmüştür. Yeni sürümler, .NET Framework'ün her sürümüyle uyumlu derlemeleri sürüm 2.0'a ve hatta .NET Compact Framework 3.5'e göndermeye devam eder.
.NET Core'un ilk sürümü (2016'da yayımlandı), .NET'in tek, basit, modern ve platformlar arası bir uygulamasıydı. Daha modern alternatiflere sahip eski API'ler ve API'ler kasıtlı olarak kaldırıldı. ADO.NET DataSet API'lerinden hiçbirini (DataTable ve DataAdapter dahil) içermez.
Entity Framework ekibi System.Data.SQLite kod temeli hakkında biraz bilgi sahibiydi. EF ekibinin eski bir üyesi olan Brice Lambson, daha önce SQLite ekibinin Entity Framework 5 ve 6 sürümleri için destek eklemesine yardımcı olmuştu. Brice, .NET Core'un planlandığı zamanda kendi SQLite ADO.NET sağlayıcısı uygulamasıyla da denemeler yapıyordu. Uzun bir tartışmanın ardından Entity Framework ekibi, Brice'in prototipini temel alarak Microsoft.Data.Sqlite oluşturmaya karar verdi. Bu, .NET Core hedefleriyle uyumlu yeni bir basit ve modern uygulama oluşturmalarını sağlar.
Daha modern ne anlamına geldiğine bir örnek olarak, hem System.Data.SQLite hem de Microsoft.Data.Sqlite içinde kullanıcı tanımlı işlev oluşturmak için kod aşağıda verilmiştir.
// 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));
2017'de .NET Core 2.0 stratejide bir değişiklik yaşadı. .NET Framework ile uyumluluğun .NET Core'un başarısı için hayati önem taşıdığına karar verildi. DataSet API'leri de dahil olmak üzere kaldırılan API'lerin çoğu geri eklendi. Diğer birçok kişide olduğu gibi, bu kısıtlanmamış System.Data.SQLite'nin de .NET Core'a taşınmasına olanak sağladı. Ancak Microsoft.Data.Sqlite'ın özgün hedefi hafif ve modern olmaya devam etmektedir. Microsoft.Data.Sqlite tarafından uygulanmayan ADO.NET API'leri hakkındaki ayrıntılar için bkz. ADO.NET sınırlamaları.
Microsoft.Data.Sqlite'a yeni özellikler eklendiğinde System.Data.SQLite'in tasarımı dikkate alınır. Mümkün olduğunda ikisi arasındaki değişiklikleri en aza indirerek aralarındaki geçişi kolaylaştırmaya çalışırız.
Veri türleri
Microsoft.Data.Sqlite ile System.Data.SQLite arasındaki en büyük fark, veri türlerinin nasıl işleneceğidir.
System.Data.SQLite, bunları doğrudan .NET türlerine eşleyerek sütun türlerine ek semantikler uygular. Bu, sağlayıcıya daha güçlü bir tür hissi verir, ancak bazı eksiklikleri vardır. Örneğin, SELECT deyimlerindeki ifadelerin sütun türlerini belirtmek için yeni bir SQL deyimi (TYPES) tanıtmaları gerekiyordu.
Bağlantı dizeleri
Microsoft.Data.Sqlite anahtar sözcükleri çok daha az
| Anahtar sözcük | Alternatif |
|---|---|
| Önbellek Boyutu | Gönder PRAGMA cache_size = <pages> |
| EksikseBaşarısızOl |
Mode=ReadWrite kullanma |
| FullUri | Veri Kaynağı anahtar sözcüğünü kullanma |
| Günlük Modu | Gönder PRAGMA journal_mode = <mode> |
| Eski Biçim | Gönder PRAGMA legacy_file_format = 1 |
| En Fazla Sayfa Sayısı | Gönder PRAGMA max_page_count = <pages> |
| Sayfa Boyutu | Gönder PRAGMA page_size = <bytes> |
| Yalnızca Okuma |
Mode=ReadOnly kullanma |
| Eşzamanlı | Gönder PRAGMA synchronous = <mode> |
| Uri | Veri Kaynağı anahtar sözcüğünü kullanma |
| UTF16 Kodlamasını Kullan | Gönder PRAGMA encoding = 'UTF-16' |
İzin
Microsoft.Data.Sqlite,SQLite'in yetkilendirme geri çağırmasını ortaya çıkaran herhangi bir API'ye sahip değildir. Bu özellik hakkında geri bildirim sağlamak için sorun #13835 kullanın.
Veri değişikliği bildirimleri
Microsoft.Data.Sqlite'da SQLite'in veri değişikliği bildirimlerini ortaya çıkaran bir API yoktur. Bu özellik hakkında geri bildirim sağlamak için konu #13827 kullanın.
Sanal tablo modülleri
Microsoft.Data.Sqlite'ın sanal tablo modülleri oluşturmak için herhangi bir API'si yoktur. Bu özellik hakkında geri bildirim sağlamak için #13823 numaralı sorunu kullanın.