Anasayfaya Dön

EF Core ile Sqlite Dosyasının Oluşturulması

 EF Core ve Sqlite kullanarak veritabanı dosyasının oluşturulması uygulama üzerinden anlatılmaktadır.

Giriş

Örnek bir uygulama kurgulayalım. Öğrenci adı ve  iki sınav notunu kayıt ederek, basit hesaplamalar yapan bir uygulama düşünelim. 

Not: uygulamayı geliştirirken .net framewok 8, ide için visual studio code, veritabanı için de sqlite kullandım. 

Proje Kurulumu

Proje için Uygulama adında bir klasör oluşturalım ve Visual Studio Code (vscode) ile açalım. 

Adım1: Projeye Asp.net Core MVC şablonunu dahil edelim.

Visual Studio Code terminal (PowerShell veya CMD) üzerinden aşağıdaki komutu verelim. 

dotnet new mvc

Adım 2: Gerekli Paketleri Kur.  (Bağımlılıklar - Dependencies)

Projeye Entity Framework (EF) konutlarını kullanmak ve sqlite bağlantı komutlarını kullanabilmek için bağımlılıkların kurulması gereklidir. 

Bunun için vscode terminal üzerinden aşağıdaki komutları sırasıyla verelim. 

dotnet add package Microsoft.EntityFrameworkCore.Sqlite -v 8
dotnet add package Microsoft.EntityFrameworkCore.Design -v 8

Projede .NET 8 kullanıldığı için paketlerin 8.0.0 sürümü kurulmalıdır. 

Not:  Sürüm belirtilmezse NuGet en güncel sürümü indirir. En güncel sürüm .NET 8 ile uyumsuz olabilir. Bu nedenle `--version 8.0.0` veya  `--v 8`  mutlaka yazılmalıdır.

Paket Açıklamaları: Sqlite → SQLite veritabanı desteği, Design → Migration komutları için gereklidir.

Model Nedir?

Model, veritabanındaki bir tabloyu temsil eden C# sınıfıdır. Sınıftaki her property, tablodaki bir sütuna karşılık gelir.

Adım 3: Öğrenci Modeli Oluştur.

Models klasörüne Ogrenci.cs dosyası eklenir:

public class Ogrenci
{
    public int Id { get; set; }
    public string AdSoyad { get; set; };
    public int Sinav1 { get; set; };
    public int Sinav2 { get; set; };
}

Property

Veritabanı Sütunu

Açıklama

Id

Id (Primary Key)

Her kayıt için otomatik artan numara

AdSoyad

AdSoyad

Öğrenci adı soyadı

Sinav1

Sinav1

1. sınav notu

Sinav2

Sinav2

2. sınav notu

DbContext Nedir?

DbContext, uygulama ile veritabanı arasındaki köprüdür. Veritabanında hangi tabloların olduğu burada tanımlanır.

Adım 4: Projeye context Oluştur.

Projede Data klasörü oluşturalım ve içine UygulamaDbContext.cs dosyasını ekleyelim. Models klasörü içerisine de konulabilirdi ve sorun olmadan çalışırdı.

using Microsoft.EntityFrameworkCore;
public class UygulamaDbContext : DbContext
{
    public UygulamaDbContext(DbContextOptions<UygulamaDbContext> options) : base(options)
    {
    }
	public DbSet<Ogrenci> Ogrenciler{ get; set; }
    // Buraya tablolar eklenecek
}

DbSet<Ogrenci> ifadesi, Ogrenci sınıfından bir veritabanı tablosu oluşturulacağını belirtir.

Adım 5: Program.cs ye Servisi Kaydetmek

Program.cs dosyasının en üstüne using eklenir, ardından DbContext servisi kaydedilir.

using Microsoft.EntityFrameworkCore;

//SQLite Bağlantısı 
builder.Services.AddDbContext<UygulamaDbContext>(options => options.UseSqlite("Data Source=okul.db"));

Migration Nedir?

Migration, model sınıflarını veritabanı tablolarına dönüştüren işlemdir. İki aşamada yapılır.

Adım 6: Migration Oluştur. Aşama 1

dotnet ef migrations add IlkMigration

Bu komut Migrations klasörü oluşturur ve içine tablo yapısını tanımlayan C# dosyaları ekler. Veritabanını henüz değiştirmez.

Adım 7: Veritabanını oluştur.

dotnet ef database update

Bu komut okul.db dosyasını oluşturur ve Ogrenciler tablosunu ekler.

Migration Sonrası Ne Oldu?

okul.db dosyası projede görünür. İçinde şu tablo oluşmuştur:

CREATE TABLE Ogrenci(
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    AdSoyad TEXT NOT NULL,
    Sinav1 INTEGER NOT NULL,
    Sinav2 INTEGER NOT NULL
);

EF Core bu SQL’i sizin yerinize yazdı ve çalıştırdı.

Özet

Adım Ne Yapıldı
Paket kurulumu EF Core 8.0.0 ve SQLite paketleri eklendi
UygulamaDbContext Veritabanı bağlantı sınıfı oluşturuldu
Program.cs using eklendi, servis kaydedildi