ASP.NET Core, Entity Framework Core ile PostgreSQL Code First

net-core-logo-proposal

Bugün Mshowto‘da Code First yapısının ne olduğunu ve Migration ile veri tabanına model oluşturma konusu ile sizlerleyim. İlk olarak Entity Framework nedir? Sorusu ile başlamak istiyorum.

Entity Framework: Entity Framework ORM (Object Relational Mapping) araçlarından biridir. ORM nedir dersek ilişkisel veri tabanı ile nesneye yönelik programlama (OOP) arasında bir köprü görevi gören araçtır. Basite indirgemek istersek nesnelerimizi ilişkisel veri tabanındaki tablomuza bağlayan ve veri alışverişini bizim için yapan bir metottur. ORM tekniği belli bir programlama diline bağlı değildir ve her OO dilinde yazılabilir. Böylece veri tabanı işlemlerinin SQL kodları yazmadan nesneler üzerinden kolayca yapılmasını sağlar. Veri tabanına yapılacak CRUD (Create Read Update Delete) işlemlerini EF aracı tarafından algılanır ve yapılacak olan işlem SQL kodlarına dönüştürülür. Bu işleme “Code Generating” denir. EF kullanan geliştirici Linq kullanarak sorgu yazabilir.

Entity Framework ile 3 farklı yöntem ile proje geliştirilebilir. Bu yöntemler;

1. Model First (New Database)

2. Database First (Existing Database)

3. Code First (New Database)

Model First (Önce Model):
Bu yöntem Visual Studio üzerinde boş bir model dosyası (.edmx) eklenerek veri tabanı bu model üzerinde oluşturulur. Derleme adımında verilen Script dosyası veri tabanını oluşturur.

Database First (Önce Veri tabanı): Bu yöntem önceden oluşturulmuş olan veri tabanını projeye model olarak bağlayarak gerekli classlarımız Entity Framework tarafından oluşturulmaktadır.

Bu yöntem hali hazırda var olan veri tabanı projeye model dosyası ile bağlanır ve gerekli classlar EF tarafından üretilir.

Code First (Önce Kod – Yeni / Var olan Veritabanı): Bu yöntem classlar ve mapping kodları yazılımcı tarafından oluşturulur. Daha sonra veri tabanı bu classlardan türetilir ve modellemenin durumuna göre tekrardan şekillenebilir.

Biz Entity Framework yöntemlerinden CodeFirst yaklaşımı kullanarak veri tabanı tablo ve ilişkilerini Class(sınıf) yardımıyla oluşturarak işleyişimizi devam ettireceğiz.

Öncelikli olarak yeni bir .Net Core projesi ve web projesi oluşturuyorum.


Resim-1


Resim-2

Oluşturduğumuz her iki proje için Package Manager Console üzerinden Entity Framework Core paketini Install-Package Microsoft.EntityFrameworkCore komutu ile ya da ekran görüntüsünde bulunan (Solution sağ tıklayıp Manage NuGet Packages for Solution ‘ı seçiyoruz) ekrandan indiriyoruz.

  • Npgsql.EntityFrameworkCore.PostgreSQL
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.Tools

Paketlerini browserdan bulup yüklüyoruz.

 

Resim-3

Appsettings.json içerisine veri tabanı ile bağlantı sağlayacak bağlantı bilgilerimizi yazıyoruz.

Ben burada PostgreSQL ile bağlantı kurdum siz istediğiniz veri tabanı ile bağlantı kurabilirsiniz.


Resim-4

Dependency Injection ile Context sınıfımızı uygulamaya Register edebilmek için Startup dosyası içerisindeki “ConfigureServices” metodunda aşağıdaki kodları yazıyoruz.


Resim-5

User isimli classımızı oluşturuyorum ve içerisine Migration ile veri tabanı oluşturmak istediğim tablomun modelini tanımlıyorum.


Resim-6

Modelimizi tanımladıktan sonra TableContext isimli bir class oluşturuyorum. Bu class DbContextten kalıtım almaktadır. İçerisinde User tablomun modelini çağırıyorum. Oluşturduğumuz her modeli yukarıdaki şekilde TableContextin içerisine tanımlamalıyız.
Burada dikkat edilmesi gereken nokta şudur ki; standart Entity Framework’te olduğu gibi gerekli konfigürasyon ayarları sağlayan ve tablolar arası ilişkileri gösteren bir “.edmx” uzantılı dosya bulunmamakta, direkt olarak sınıfsal bazlı nesneler üzerinden işlemler gerçekleştirilmektedir.


Resim-7

Artık Migration oluşturmak için projemiz hazır. Migration, kod kısmında yaptığımız değişikliklerin veri tabanını güncellemesini sağlayan yönteme Migration denir.
Tools à NuGet Package Manager à Package Manager Console ‘u seçiyoruz. Açılan consol sayfasına Add-Migration yazıp entera tıklıyoruz.
Bizden isim girmemizi istiyor istediğimiz ismi girip tekrar entera tıklıyoruz. Son olarak Database-Update komutunu çalıştırıyoruz böylelikle nesneler üzerindeki işlemlerimizi veri tabanına yazdıracaktır.

Resim-8

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar

www.mshowto.org
TAGs: core,.net core nedir,asp.net core,microsoft,code first,code first nedir,migration nedir,code first kullanimi ,code first veritabani,migration kullanimi,entity framework

 

Yazı gezinmesi

Mobil sürümden çık