3/18/2023 7:52:25 PM
ASP .NET CORE 3.1
( 0 ) Yorum
ASP .NET CORE 3.1'DE MİGRATİON ÖNCESİ -1

Migration işlemine başlamadan bazı işlemleri yapmamız gerekiyor.

 

Bu projede DATA, ENTİTY, WEB olmak üzere 3 katman kullandım. Tabiki siz bu katmanları çoğaltabilirsiniz veya tek katmanda yapabilirsiniz.

DATA katmanında Context class'ı ve dbsetler var, ENTİTY katmanında model class'larım var, WEB Katmanıda UI katmanım.

 

Migration için gereken Framework'leri yükleyerek başlayalım.

 

Data katmanına sağ tıklayıp Manage NuGet Packagess... tıklayıp Browse sekmesine gelin.

 

Projenizi yazarken muhtemelen yüklemişinizdir ama eğer yüklemediyseniz ,

Microsoft.EntityFrameworkCore

arattırıp yükleyin.

 

İkinci yüklemeniz gereken Framework ise özellikle veri tabanına bağlanmak için yazdığınız ConnectionString'te işinize yarayacak Framework  olan;

Microsoft.EntityFrameworkCore.SqlServer

arattırıp yüklemeniz gerekiyor.

 

Bunları yükledikten sonra projenizi Rebuild edip derleyin.

 

Sonraki adım ise ConnectionString oluşturmaktır.

Bu string web katmanında bulunan appsettings.json içerisine yazılması gerekiyor. Eğer bir hosting almışsanız, size bi bağlantı veriliyor, aldığınız bağlantıyı çift tırnak içerisine kopyalamanız yeterli veya buraları kendinize göre uyarlayabilirsiniz.

 "ConnectionStrings": {
    "DefaultConnection": "Server = _SqlServerAdı; Database = _VeriTabanıAdı; 
                         UID = _KullanıcıAdı; PWD = _Şifre"
  },

 

Eğer Localdeki bir SQL Server'a Windows Authentication olarak bağlanmak istiyorsanız aşağıdaki kodda ServerAdını değiştirmeniz sizin için yeterli.

 "ConnectionStrings": {
    "DefaultConnection": "Server = _SqlServer_Adı; Trusted_Connection=True;"
  },

 

ConnectionStrings yazdığımıza göre gelelim sonraki adıma.

Yazdığımız ConnectionStrings'i projeye tanıtmaya. Startup.cs içine girdiğimizde ConfigureServices metodun altına Aşağıdaki kodu yazmanız yeterli. 

services.AddDbContext<BlogContext>(options => options.UseSqlServer
           (Configuration.GetConnectionString("DefaultConnection"), 
               b => b.MigrationsAssembly("CodeFirstMigration.Web")));

Burada dikkat etmeniz gereken 4 yer var.

  1. BlogContext yazan yere DATA katmanında oluşturacağınız context class'ının ismi olacaktır.*
  2. DefaultConnection yazan yer ile appsettings.json'da verdiğiniz Connection isim aynı olmalıdır.
  3. DbContext'in ve DbSet'lerin olduğu Data katmanı haricindeki katmana migration yaptığımız için son satırdaki gibi o katmanı belirtmemiz gerekiyor. Aksi halde migration esnasında hata alacaksınız.
  4. Eğer tek katman kullanıyorsanız yada DATA katmanına Migration yapıyorsanız son satırı yazmanıza gerek yok.

 

* Yukarıdaki adımlar gerçekleştikten sonra eğer DATA katmanında context class'ı oluşturmadıysanız nasıl oluşturacağınız hakkındaki makalemi BURADAN okuyabilirsiniz.