C# ile uygulama geliştirirken geliştiricilerin büyük çoğunluğu MSSQL kullanır. Bunun temel nedeni Microsoft ekosistemiyle doğal uyumluluğudur. Ancak bazı projelerde ağır bir veritabanı sunucusuna ihtiyaç duyulmaz. Özellikle masaüstü uygulamaları, küçük ölçekli sistemler, gömülü uygulamalar veya tek kullanıcıya yönelik yazılımlar için çok daha hafif bir veritabanı çözümü tercih edilebilir.
Bu noktada devreye SQLite girer. SQLite, kuruluma ihtiyaç duymayan, tek bir dosya üzerinde çalışan ve oldukça hızlı bir veritabanıdır. Üstelik Entity Framework ile birlikte kullanıldığında ORM avantajlarından da faydalanabilirsiniz.
Bu rehberde C# SQLite Entity Framework kullanımı detaylı şekilde ele alınacaktır. Kurulumdan DbContext oluşturulmasına, connection string yapılandırmasından veri işlemlerine kadar tüm adımlar kapsamlı şekilde anlatılacaktır.
- SQLite Nedir?
- Entity Framework Nedir?
- SQLite Ne Zaman Tercih Edilmeli?
- SQLite ve Entity Framework Birlikte Kullanımı
- Proje Oluşturma ve NuGet Paketleri
- Config Dosyası ve Connection String
- Entity Framework DbContext Oluşturma
- Model Sınıfı Oluşturma
- Data Access Katmanı Oluşturma
- SQLite Performans İpuçları
- Sık Sorulan Sorular
SQLite Nedir?
SQLite, sunucu gerektirmeyen gömülü bir veritabanı motorudur. Diğer veritabanı sistemlerinden farklı olarak ayrı bir servis çalıştırmaz ve tüm verileri tek bir dosya içerisinde saklar.
SQLite; mobil uygulamalar, masaüstü programları ve küçük ölçekli sistemlerde yaygın şekilde kullanılır. Kurulum gerektirmediği için özellikle dağıtımı kolay projelerde tercih edilir.
SQLite Özellikleri
- Sunucu gerektirmez
- Tek dosyada veri saklar
- Çok hızlıdır
- Kurulumu yoktur
- Cross platform çalışır
Kısaca tanımlamak gerekirse:
SQLite, kurulum gerektirmeden çalışan ve verileri tek dosyada saklayan hafif bir ilişkisel veritabanıdır.
Entity Framework Nedir?
Entity Framework, Microsoft tarafından geliştirilen bir ORM (Object Relational Mapping) aracıdır. ORM sayesinde veritabanı tabloları ile C# sınıfları arasında eşleme yapılır.
Bu sayede geliştiriciler SQL sorguları yazmadan veri işlemleri gerçekleştirebilir.
Entity Framework Avantajları
- SQL yazma ihtiyacını azaltır
- Veritabanı bağımlılığını azaltır
- Kod okunabilirliğini artırır
- Veri erişim katmanını sadeleştirir
- Bakımı kolaylaştırır
Entity Framework sayesinde SQLite gibi farklı veritabanlarıyla çalışmak oldukça kolay hale gelir.
SQLite Ne Zaman Tercih Edilmeli?
Her projede MSSQL kullanmak doğru değildir. Bazı projelerde daha hafif ve kurulumsuz bir veritabanı çözümü daha mantıklıdır.
SQLite Kullanım Senaryoları
- Masaüstü uygulamaları
- Offline çalışan sistemler
- Küçük ölçekli projeler
- Tek kullanıcı uygulamaları
- Mobil uygulamalar
| Özellik | SQLite | MSSQL |
|---|---|---|
| Kurulum | Gerekmez | Gerekir |
| Sunucu | Yok | Var |
| Veri Saklama | Tek dosya | Sunucu tabanlı |
| Kullanım Alanı | Küçük projeler | Büyük sistemler |
SQLite özellikle tek bilgisayarda çalışan uygulamalar için idealdir.
SQLite ve Entity Framework Birlikte Kullanımı
SQLite ile Entity Framework kullanmak geliştiricilere büyük kolaylık sağlar. Çünkü ORM sayesinde veritabanı işlemleri C# kodları üzerinden yapılabilir.
Bu yaklaşım şu avantajları sağlar:
- Daha temiz kod
- Daha az SQL bağımlılığı
- Daha hızlı geliştirme süreci
- Kolay bakım
SQLite ile Entity Framework kullanımı birkaç temel adımdan oluşur.
- Proje oluşturma
- NuGet paketlerini yükleme
- Connection string tanımlama
- DbContext oluşturma
- Model sınıflarını tanımlama
- Veri erişim katmanı oluşturma
Proje Oluşturma ve NuGet Paketleri
İlk adım olarak Visual Studio üzerinden bir proje oluşturulmalıdır.
Proje Oluşturma
- Visual Studio açılır
- Yeni bir proje oluşturulur
- Console, Web veya Desktop proje seçilebilir
Gerekli NuGet Paketleri
SQLite ve Entity Framework kullanabilmek için bazı paketlerin projeye eklenmesi gerekir.
- EntityFramework
- System.Data.SQLite
- System.Data.SQLite.EF6
NuGet Package Manager üzerinden bu paketler kolayca yüklenebilir.
Config Dosyası ve Connection String
SQLite ile Entity Framework kullanırken config dosyasına bazı ayarlar eklemek gerekir.
Provider Tanımlama
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
Connection String Tanımlama
<connectionStrings>
<add name="SQLiteConnection" providerName="System.Data.SQLite.EF6"
connectionString="Data Source=|DataDirectory|\veritabani.db" />
</connectionStrings>
|DataDirectory| ifadesi uygulamanın çalışma dizinini temsil eder.
Bu sayede veritabanı dosyası uygulama klasörü içerisinde saklanabilir.
Entity Framework DbContext Oluşturma
Entity Framework kullanırken veritabanı bağlantısı DbContext sınıfı üzerinden yönetilir.
Aşağıdaki örnek SQLite ile çalışan bir DbContext yapısını göstermektedir.
using System.Configuration;
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
public class EfContext : DbContext
{
public EfContext() : base(GetConnection(), false)
{
Database.SetInitializer<EfContext>(null);
Configuration.LazyLoadingEnabled = false;
}
public static DbConnection GetConnection()
{
var connection = ConfigurationManager.ConnectionStrings["SQLiteConnection"];
var factory = DbProviderFactories.GetFactory(connection.ProviderName);
var dbCon = factory.CreateConnection();
dbCon.ConnectionString = connection.ConnectionString;
return dbCon;
}
public DbSet<Personel> Personeller { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
}
Bu sınıf veritabanı bağlantısını yönetir ve tabloları temsil eden DbSet nesnelerini içerir.
Model Sınıfı Oluşturma
Entity Framework ile çalışırken veritabanı tabloları C# sınıfları ile temsil edilir.
Örnek olarak bir Personel tablosu için model sınıfı oluşturabiliriz.
public class Personel
{
public int Id { get; set; }
public string Ad { get; set; }
}
Bu sınıf veritabanındaki Personel tablosunu temsil eder.
Data Access Katmanı Oluşturma
Veri işlemlerini yönetmek için ayrı bir veri erişim katmanı oluşturmak iyi bir yazılım mimarisi yaklaşımıdır.
Örnek bir Data Access sınıfı aşağıdaki gibi olabilir.
using System.Collections.Generic;
using System.Linq;
public class PersonelDal
{
public List<Personel> GetList()
{
using (var context = new EfContext())
{
return context.Personeller.ToList();
}
}
public Personel Add(Personel personel)
{
using (var context = new EfContext())
{
context.Entry(personel).State = EntityState.Added;
context.SaveChanges();
return personel;
}
}
public Personel Update(Personel personel)
{
using (var context = new EfContext())
{
context.Entry(personel).State = EntityState.Modified;
context.SaveChanges();
return personel;
}
}
public void Remove(Personel personel)
{
using (var context = new EfContext())
{
context.Entry(personel).State = EntityState.Deleted;
context.SaveChanges();
}
}
}
SQLite Kullanırken Performans İpuçları
SQLite küçük projelerde çok hızlı çalışır. Ancak doğru yapılandırma yapılmazsa performans sorunları yaşanabilir.
Öneriler
- Tek kullanıcı sistemlerde kullanın
- Transaction kullanın
- Lazy Loading gerekmiyorsa kapatın
- Connection yönetimini iyi yapın
SQLite Kullanırken Dikkat Edilmesi Gerekenler
- Aynı anda çok fazla bağlantı yapılmamalıdır
- Büyük ölçekli web projeleri için uygun değildir
- Dosya erişim izinleri doğru ayarlanmalıdır
Sık Sorulan Sorular
C# ile SQLite kullanılabilir mi?
Evet. C# uygulamalarında SQLite rahatlıkla kullanılabilir. System.Data.SQLite kütüphanesi sayesinde .NET projeleri SQLite veritabanı ile çalışabilir.
SQLite ile Entity Framework kullanılabilir mi?
Evet. Entity Framework ORM aracı SQLite ile uyumlu şekilde çalışabilir. Bunun için SQLite EF sağlayıcı paketlerinin projeye eklenmesi gerekir.
SQLite hangi projeler için uygundur?
SQLite genellikle masaüstü uygulamaları, mobil uygulamalar ve küçük ölçekli projeler için uygundur. Sunucu gerektirmemesi en büyük avantajıdır.
SQLite mı MSSQL mi daha iyi?
Bu tamamen proje ihtiyaçlarına bağlıdır. Küçük ve tek kullanıcı uygulamalarında SQLite daha pratiktir. Büyük ölçekli sistemlerde ise MSSQL tercih edilmelidir.
SQLite dosyası nerede saklanır?
SQLite verileri tek bir .db dosyasında saklanır. Bu dosya uygulama klasörü içerisinde bulunabilir.
Sonuç olarak C# SQLite Entity Framework kullanımı özellikle küçük ölçekli uygulamalar için oldukça güçlü bir çözümdür. Doğru yapılandırma ile hızlı, güvenilir ve bakım maliyeti düşük bir veri yönetimi altyapısı oluşturabilirsiniz.


Yorum Yap