Ara

Sqlite Ve Entity Framework İle Hızlı Ve Kolay Veritabanı Yönetimi: Adım Adım Kılavuz

MSSQL ile Entity Framework kullanımı hakkında birçok kaynak bulunmasına rağmen, SQLite ile Entity Framework kullanımı hakkında Türkçe kaynak bulmak oldukça zordur. Bu makalede, SQLite ve Entity Framework'ü nasıl birlikte kullanabileceğinizi detaylı bir şekilde anlatacağım.

 

SQLite Nedir ve Ne İçin Kullanılır?

SQLite, genellikle tek cihazda çalışacak uygulamalar için ideal bir veritabanıdır. Ancak, aynı anda birden fazla cihazın SQLite veritabanına bağlanması durumunda sorunlar yaşanabilir. Bu nedenle, tek bir bilgisayarda çalışacak projeler için SQLite'ı tercih edebilirsiniz. Bu makalede, ORM (Object-Relational Mapping) kullanarak SQLite ile nasıl çalışabileceğinizi göstereceğim.

 

SQLite ile Entity Framework'ün Birlikte Kullanımı

Proje Oluşturma ve Gerekli Paketlerin Yüklenmesi

  1. İlk olarak, bir masaüstü veya web projesi oluşturun.
  2. Projeye sağ tıklayıp "Manage Nuget Packages" seçeneğini açın.
  3. Arama kutusuna "EntityFramework" yazarak gerekli paketi projenize ekleyin.
  4. Ardından, "System.Data.SQLite" paketini de aynı şekilde projenize dahil edin.

 

Config Dosyasını Düzenleme

Gerekli DLL dosyalarını projenize dahil ettikten sonra, config dosyanızda bazı düzenlemeler yapmanız gerekecek. Config dosyanıza aşağıdaki kodu ekleyin:

<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />

Bu değişiklik, SQLite ile Entity Framework'ü birlikte kullanabilmeniz için gereklidir.

 

Connection String Tanımlama

Veritabanınıza bağlanabilmek için connection string'inizi belirtmelisiniz. Config dosyanıza aşağıdaki kodu ekleyin:

<connectionStrings>
    <add name="SQLiteConnection" providerName="System.Data.SQLite.EF6" connectionString="Data Source=|DataDirectory|\veritabaniIsmi.db" />
</connectionStrings>

Not: Benim veritabanı dosyam debug klasörü içerisindedir. |DataDirectory| kodu, debug klasörünün yolunu almak içindir.

 

Entity Framework Context Sınıfının Oluşturulması

Şimdi, veritabanına bağlanmak için gereken context sınıfını oluşturmalıyız:

using System.Configuration;
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;

namespace Webkoz.Test.Crud.DataAccess.SQlite
{
    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);
        }
    }
}

 

Veritabanı Tablosunun Sınıfa Uyarlanması

Aşağıda, veritabanındaki Personel tablosuna karşılık gelen bir sınıf örneği bulunmaktadır:

public class Personel
{
    public int Id { get; set; }
    public string Ad { get; set; } 
}

 

Veritabanı İşlemleri İçin Data Access Sınıfının Oluşturulması

Şimdi, veritabanı işlemlerini gerçekleştirmek için bir PersonelDal sınıfı oluşturalım:

using System.Collections.Generic;
using System.Linq;

namespace Webkoz.Test.Crud.DataAccess.SQlite
{
    public class PersonelDal
    {
        public List 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 AddRange(List personeller)
        {
            using (var context = new EfContext())
            {
                foreach (var personel in personeller)
                {
                    context.Entry(personel).State = EntityState.Added;
                }
                context.SaveChanges();
            }
        }

        public void Remove(Personel personel)
        {
            using (var context = new EfContext())
            {
                context.Entry(personel).State = EntityState.Deleted;
                context.SaveChanges();
            }
        }
    }
}

Bu makalede, SQLite ve Entity Framework'ü birlikte nasıl kullanabileceğinizi adım adım anlattık. Bu rehber sayesinde, kendi projelerinizde SQLite'ı kolaylıkla entegre edebilir ve ORM kullanarak veritabanı işlemlerinizi gerçekleştirebilirsiniz. Diğer yazılarımda görüşmek dileğiyle, iyi kodlamalar!

Öneriler ve İpuçları

  • SQLite'ın tek cihazda çalışacak projeler için uygun olduğunu unutmayın.
  • Veritabanı bağlantı dizelerini dikkatlice düzenleyin.
  • ORM kullanımı, veritabanı işlemlerini daha hızlı ve güvenilir hale getirebilir.

Bu adımları takip ederek, SQLite ve Entity Framework ile başarılı bir entegrasyon sağlayabilirsiniz.

Author

Bilgisayar programcılığı bölümü mezunuyum. Web ve masaüstü uygulama geliştiricisiyim. C#,.Asp.Net Core, JQuery, Ajax, Entity Framework konularında bilgi sahibiyim. Bu sitenin kurucusuyum . Aynı zamanda şiir yazmayı seven birisiyim. 2023 yılında "Gökkuşağının Koyu Tonu" adlı ilk şiir kitabım yayınlandı. Yazmaya devam ediyorum.
Yorum Yap
Yorumlar (0)