Merhaba arkadaşlar, bu yazımda sizlere .NET Core API Entity Framework Ekleme konusundan bahsedeceğim.
Önceki yazımızda Controller dosyalarımızı oluşturmuştuk. Bu Controller dosyalarında GET,POST,PUT,DELETE aksiyonlarımızı yazacağız. Yazmadan önce Entity Framework Code First eklemesini yapmak istedim. Bu işlemi sağladıktan sonra işlemlerimize veri tabanı kullanarak devam edeceğiz.
İlk olarak Entity Framework kütüphanelerini eklememiz gerekiyor. Bunun için de Nuget Package Manager üzerinden paketlerimizi yükleyeceğiz.
Projemize sağ tuşla tıkladıktan sonra çıkan menüden Manage Nuget Packages seçimini yapıyoruz. Karşımıza gelen ekranda Browse kısmından ilgili paketlerimizi yükleyeceğiz.
Yükleyeceğimiz paketler:
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Tools
.NET Core 5.0 versiyonunu kullandığımız için 5.0.13 versiyonunu yüklüyoruz.
Paketler yüklendikten sonra Solution Explorer üzerinden Dependencies kısmına gelip gelmediğini kontrol ediyoruz.
Kontrolleri sağladığımızda yükleme işlemleri başarılı bir şekilde gerçekleşmiş gözükmektedir. Bu işlemlerden sonra da projemizde DataContext diye bir klasör ve Entities diye bir klasör oluşturuyoruz. DataContext Class‘ını DataContext klasörü içerisinde, Entity classlarımız da Entities klasörü içerisine oluşturuyoruz.
Entity dosyalarımızı oluşturuyoruz. Product ve Category class dosyalarını Entities klasöründe oluşturuyoruz ve içerisine veri tabanında olmasını istediğimiz property’leri ekliyoruz.
Product Entity:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
Product dosyamızda Id, Name, Description, Price, CategoryId alanlarını yazdık. Ek olarak Category tipinde de bir property’miz var. Bir ürün bir kategoriye bağlı olacağından dolayı bu property eklemesini yapıyoruz. Veri tabanı tarafında İlişki kurulması(Foreign Key) için bu işlemi sağlıyoruz.
Category Entity:
public class Category
{
public Category()
{
Products = new List<Product>();
}
public int Id { get; set; }
public string Name { get; set; }
public List<Product> Products { get; set; }
}
Kategori içerisinde de bir Product Listesi olmalı. Bir kategoriye ait birden fazla ürün olabilir. O yüzden Product Listesi olarak bir property eklemesi gerçekleştiriyoruz.
Sıra geldi DataContext class’ımızı oluşturuyoruz.
public class NetCoreApiSampleDataContext : DbContext
{
public NetCoreApiSampleDataContext()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"CONNECTIONSTRING");
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
DataContext içerisinde Products ve Categories için DbSet ile property’mizi oluşturuyoruz. OnConfiguring metodunda da SqlServer kullanacağımızı belirtiyoruz ve içerisine Connection String’imizi yazıyoruz. İlerleyen yazılarda bu işlemi Startup dosyamızda tanımlayacağız ve Ayar dosyasından ConnectionString okumasını yapacağız.
Yukarıdaki işlemlerden sonra sıra geldi veri tabanımızı Migration ile oluşturmaya.
Menüden Tools > Nuget Package Manager > Package Manager Console seçimini yapıyoruz ve açıldıktan sonra ilgili komutlarımızı yazıyoruz.
Add-Migration
add-migration komutumuzu yazıp enter’a bastıktan sonra bize bir Name alanı gelir ve bir isim girmemiz gerekir. Buraya girdiğimiz isimden sonra komutumuzu çalıştırdığımızda Migrations klasörü oluşturulur ve içerisinde migration dosyaları otomatik olarak oluşturulur.
Oluşturulduktan sonra yine Package Manager Console üzerinde update-database komutumuzu yazıp çalıştırıyoruz.
Bu işlemlerden sonra veri tabanımız Sql Server tarafında oluşturulmuş olacaktır. Aşağıdaki resimde de görüldüğü üzere Categories ve Products tablomuz oluşturulmuş, ek olarak da EFMigrationsHistory diye bir tablo oluşturulmuştur.
Entity Framework Code First ekleme ve veri tabanı oluşturma işlemleri yukarıdaki gibi yapılabilir.
Bir sonraki yazımda oluşturduğumuz Context‘i kullanarak Products ve Categories için GET metotlarımızı yazacağız.
Görüşmek üzere 🙂