Entity Framework Core nedir?
Ö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 Pizzas
kullanı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.