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 (Primary Key) |
Her kayıt için otomatik artan numara |
|
|
AdSoyad |
Öğrenci adı soyadı |
|
|
Sinav1 |
1. sınav notu |
|
|
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 |