Yükleniyor...

C# Entity Framework Core Giriş

C#’ta Entity Framework Core temellerini öğrenin. DbContext, DbSet ve temel veri işlemleri örneklerle anlatılıyor.

Entity Framework Core (EF Core), .NET dünyasında nesne–ilişkisel eşleme (ORM) aracı olarak kullanılan, veritabanı işlemlerini nesne yönelimli bir yaklaşımla yapmayı sağlayan bir kütüphanedir. EF Core sayesinde veritabanı tablolarını doğrudan SQL sorguları yazmadan, C# sınıfları üzerinden yönetebiliriz. Bu makalede EF Core’un temellerine, DbContext, Entity (Varlık) tanımlamalarına ve temel CRUD işlemlerine değineceğiz. (MS-SQL özelinde ayrıntılara girilmeyecek, genel EF Core yaklaşımı anlatılacaktır.)


EF Core’un Avantajları


Entity (Varlık) Tanımlama

EF Core’da bir veritabanı tablosu genellikle bir C# sınıfı ile temsil edilir. Sınıftaki özellikler tablo sütunları olarak eşlenir.


public class Product
{
    public int Id { get; set; }      // Birincil anahtar
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
}

DbContext Sınıfı

DbContext, EF Core’un kalbidir. Veritabanı bağlantısı ve tablolarla ilgili işlemler DbContext üzerinden yapılır.


using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Veritabanı sağlayıcısı burada ayarlanır
        optionsBuilder.UseInMemoryDatabase("TestDb");
    }
}

Not: Bu örnekte basitlik için InMemoryDatabase kullanılmıştır.


Temel CRUD İşlemleri

EF Core ile Create, Read, Update, Delete işlemleri kolayca yapılabilir.


using (var db = new AppDbContext())
{
    // CREATE
    db.Products.Add(new Product { Name = "Laptop", Price = 15000 });
    db.SaveChanges();

    // READ
    var products = db.Products.ToList();
    foreach (var p in products)
        Console.WriteLine($"{p.Id} - {p.Name} - {p.Price}");

    // UPDATE
    var product = db.Products.First();
    product.Price = 14000;
    db.SaveChanges();

    // DELETE
    db.Products.Remove(product);
    db.SaveChanges();
}

LINQ ile Sorgulama

EF Core, LINQ (Language Integrated Query) ile entegre çalışır. Böylece SQL yazmadan güçlü ve tip güvenli sorgular yapılabilir.


// 10000 TL'den pahalı ürünleri seç
using (var db = new AppDbContext())
{
    var expensive = db.Products
                      .Where(p => p.Price > 10000)
                      .OrderBy(p => p.Name);

    foreach (var item in expensive)
        Console.WriteLine(item.Name);
}

Migration Kavramı

EF Core, veritabanı şemasını koddan oluşturmak veya güncellemek için Migration yapısını sunar. Kodda yapılan değişiklikler migration ile takip edilerek veritabanına uygulanabilir.


// Örnek komutlar (CLI üzerinden çalıştırılır)
// dotnet ef migrations add InitialCreate
// dotnet ef database update

TL;DR

  • EF Core, ORM yaklaşımı ile veritabanı işlemlerini kolaylaştırır.
  • DbContext: Veritabanı bağlantısı ve tablolarla ilgili işlemleri yönetir.
  • Entity: Tabloları temsil eden C# sınıflarıdır.
  • CRUD işlemleri (Ekle, Oku, Güncelle, Sil) kolayca yapılır.
  • LINQ ile tip güvenli sorgular yazılabilir.
  • Migration ile veritabanı şeması kod üzerinden yönetilebilir.

İlişkili Makaleler