Entity Framework Core nedir?

Tamamlandı

Önemsiz olmayan web uygulamalarının çoğunun veri üzerinde oluşturma, okuma, güncelleştirme ve silme (CRUD) gibi işlemleri güvenilir bir şekilde çalıştırması gerekir. Ayrıca, uygulama yeniden başlatmaları arasında bu işlemler tarafından yapılan değişiklikleri kalıcı hale getirmek zorunda kalırlar. .NET uygulamalarında verileri kalıcı hale getirme konusunda çeşitli seçenekler olsa da, Entity Framework (EF) Core kullanıcı dostu bir çözümdür ve birçok .NET uygulaması için idealdir.

EF Core'un anlaşılması

EF Core, .NET uygulamaları için basit, genişletilebilir, açık kaynak ve platformlar arası veri erişim teknolojisidir.

EF Core, nesne-ilişkisel eşleyici olarak görev yapabilir ve bu da:

  • .NET geliştiricilerinin .NET nesnelerini kullanarak bir veritabanıyla çalışmasını sağlar.
  • Genellikle yazılması gereken veri erişim kodunun çoğuna olan ihtiyacı ortadan kaldırır.

EF Core, SQLite, MySQL, PostgreSQL, Oracle ve Microsoft SQL Server gibi çok sayıda popüler veritabanını destekler.

Model

EF Core ile veri erişimi bir model kullanılarak gerçekleştirilir. Model, varlık sınıflarından ve veritabanıyla bir oturumu temsil eden bir bağlam nesnesinden oluşur. Bağlam nesnesi, verileri sorgulamaya ve kaydetmeye olanak tanır.

Varlık sınıfı

Bu senaryoda bir pizza mağazası yönetim API'sini uyguladığınız için bir Pizza varlık sınıfı kullanacaksınız. Mağazanızdaki pizzaların bir adı ve açıklaması olacaktır. Ayrıca API'nin ve veritabanının bunları tanımlamasına izin vermek için bir kimliğe de sahip olmaları gerekir. Pizza Uygulamanızda kullanacağınız varlık sınıfı pizzaları tanımlar:

namespace PizzaStore.Models 
{
  public class Pizza
  {
      public int Id { get; set; }
      public string? Name { get; set; }
      public string? Description { get; set; }
  }
}

Bağlam sınıfı

Bu uygulamanın yalnızca bir varlık sınıfı vardır, ancak çoğu uygulama birden çok varlık sınıfına sahip olur. Bağlam sınıfı, varlık sınıflarınızın verilerini sorgulamaktan ve kaydetmekle ve veritabanı bağlantısını oluşturup yönetmekle sorumludur.

EF Core ile CRUD işlemleri gerçekleştirme

EF Core yapılandırıldıktan sonra varlık sınıflarınızda CRUD işlemleri gerçekleştirmek için bunu kullanabilirsiniz. Ardından, C# sınıflarına karşı veritabanı işlemlerini bağlam sınıfına temsilci olarak veda ederek geliştirebilirsiniz. Veritabanı sağlayıcıları da bunu veritabanına özgü sorgu diline çevirir. İlişkisel veritabanı için SQL örnek olarak verilmiştir. Sonuçta döndürülen varlıklar bağlamda zaten mevcut olsa bile sorgular her zaman veritabanında yürütülür.

Verileri sorgulama

Bağlam nesnesi, her varlık türü için bir koleksiyon sınıfını kullanıma sunar. Yukarıdaki örnekte bağlam sınıfı bir nesne koleksiyonunu Pizza olarak Pizzaskullanıma sunar. Bağlam sınıfının bir örneğine sahip olduğumuza göre veritabanını tüm pizzalar için sorgulayabilirsiniz:

var pizzas = await db.Pizzas.ToListAsync();

Veri ekleme

Yeni bir pizza eklemek için aynı bağlam nesnesini kullanabilirsiniz:

await db.pizzas.AddAsync(
    new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });

Verileri silme

Silme işlemleri basittir. Silinecek öğenin yalnızca bir kimliğini gerektirir:

var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
    //Handle error
}
db.pizzas.Remove(pizza);

Verileri güncelleştirme

Benzer şekilde, mevcut bir pizzayı güncelleştirebilirsiniz:

int id = 1;
var updatepizza = new Pizza { Name = "Pineapple", Description = "Ummmm?" })
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
    //Handle error
}
pizza.Item = updatepizza.Item;
pizza.IsComplete = updatepizza.IsComplete;
await db.SaveChangesAsync();

EF Core bellek içi veritabanını kullanma

EF Core, uygulamanızı test etmek için kullanılabilecek bir bellek içi veritabanı sağlayıcısı içerir. Bellek içi veritabanı sağlayıcısı test ve geliştirme için kullanışlıdır, ancak üretimde kullanılmamalıdır. Sonraki ünitede, bir veritabanı oluşturmak ve üzerinde CRUD işlemleri gerçekleştirmek için bellek içi veritabanı sağlayıcısını kullanacaksınız.