MODEL CLASS ve MIGRATION NEDİR?

Bu dersimizde EF CORE’da model kavramına değinelim ve projemizin kategori modelini oluşturalım. Model aslında bizim veritabanımızda yer alan tablolara karşılık gelen classlarımızdır. Yani veritabanı üzerindeki her bir tablo için biz uygulama tarafında model oluşturmalıyız. Model classlarımızı da uygulamada model katmanında oluşturacağız. Dolayısı ile projemin Model katmanına geliyor ve burada yer alan Model klasöründe sağ tıklıyor yeni bir class ekle diyorum.

Örneğim için bu class dını Kategori verdim. Her yerden erişilebilmesi için Public olarak ayarladım. Uygulamam da Kategori tablomda iki adet alana ihtiyacım var, birisi her tabloda olması gereken ID alanım, diğeri ise kategorinin adı olacak. Ben burada ID için KategoriID diyorum. Ad içinde KategoriAd diyorum. Bunu yapabilmek için tabi uygulama tarafımda iki adet property tanımlamam lazım.

Detaylı anlatım ve kod takibi için video:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GRSYKitapEvi_Model.Models
{
    public class Kategori
    {
        public int KategoriId { get; set; }
        public string KategoriAd { get; set; }
    }
}

Burada KategoriId benim tablomun primary key alanı olacak. Ayrıca ben burasının her yni kayıtta otomatik olarak 1 aratacak şekilde olmasını istiyorum. Peki bunu nasıl yapacağız? Bunu ilerleyen derslerde görelim 😊 Normalde proje geliştirsek bunu burada yapardım ama bu konuya sonra döneceğiz.

Benim her bir model classımı veritabanına yansıtabilmem için ilgili model classı gelip, uygulamam içindeki DbContext içine eklemem lazım. Yani database içine push etme işlemini ApplicationDbContext gerçekleştirecek.  Buraya geliyorum, kodlarımı yazıyorum.

using GRSYKitapEvi_Model.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GRSYKitapEvi_DataAccess.Data
{
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions< ApplicationDbContext > options) : base(options)
        {

        }

        public DbSet< Kategori > Kategoriler { get; set; }
    }
}

Peki bu push etme olayı nedir? Şöyle açıklayalım; benim model classım mevcut hatta model classlarım olacak. Bu model classlar ile ilgili olarak aynı zamanda kendi içlerinde bir ilişki olacak, yani relational mappings diyelim. Bu iki durum birleşerek veritabanıma yansıyacak.

Yani işin özü uygulamamın mevcut durumunu baz alırsak, Kategori model classım var, bunun ileride diyelim ki Kitap Model classı ile arasındaki ilişki benim mappings’im oluyor. Bunu da ben database tarafına anlatabilmek için bir şeyler yapmam gerekiyor. Yani benim bunu database push etmem gerekiyor, burada yeni bir kavram daha çıkıyor karşımıza buda migration demek.

Migration Nedir?

İngilizcede doğrudan kelime anlamı göç, yani şöyle düşünün benim buradaki bilgilerim, kurallarım veritabanına göç ediyor. Böyle hayal edin, tasvir doğru mu oldu bilemiyorum ama uygun gibi. Tam olarak yapılan da bu, uygulamamda dediğim kurallar, model classlar, bağıntıları migration ile anlatıyorum.

Migration 3 adımlı bir işlemdir.

  1. Öncelikle model oluşturur veya modellerimizde değişiklik yaparız. Bu noktada yeni bir model oluşturmuş olabilirsiniz veya var olan modellerinizde değişiklik yapmış olabilirsiniz. Böyle bir işlem yaptığınızda mutlaka migration ile database tarafına değişiklik yansıtılmalıdır.
  2. Migration Ekleme işlemi yaparız. Database tarafına değişikliği yansıtabilmek için migration ekleriz.
  3. Migration uygulama işlemi yaparız. Migration uygulamamıza bir isimle eklenince, henüz işlem database yansıdı demek değildir bunu database’e yansıtabilmek için migration’u database’e push etmemiz gerekir.

Şimdilik bu kadar diyelim, adım adım her işi yapacağız, bu seride amacımız daha çok bilgi vermek. Bir sonraki derste görüşmek üzere..

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir