Mini Dükkan Projesi Ders 002 DataBase Context Sınıfı

Uygulamamıza Veri Ekleme

İlgili dersi video olarak izlemek isterseniz;

Artık uygulamama yavaş yavaş veri ekleyebilirim. Biz verilerimizi local veri tabanımızda SQL Server’da tutacağız. Uygulama ve veritabanı arasındaki erişimi de Entity Framework vasıtası ile sağlayacağız. Entity Framework, Microsoft tarafından geliştirilmiş ve ORM olarak adlandırılan object-to-relational mapping frameworküdür. Yani nesnelerin ilişkilendirilmesidir diyelim ve ASP.NET Core uygulamalarında da veritabanlarına erişmek için en sık başvurulan frameworktür.

Entity Framework Core Paketlerinin Yüklenmesi

Şimdi bu iletişimi sağlayabilmek için yapmam gereken tabi öncelikle Entity Framework Core Paketlerinin yüklenmesi. Bunu yapabilmek için Visual Studio ortamımda projeme sağ tıklıyor ve Manage Nuget Packages diyorum.

Daha sonra orta kısımda Browse kısmında entityframeworkcore yazıyor ve aşağıdaki dört paketi yüklüyorum.

  • Microsoft.EntityFrameWorkCore
  • Microsoft.EntityFrameWorkCore.Design
  • Microsoft.EntityFrameWorkCore.SqlServer
  • Microsoft.EntityFrameWorkCore.Tools

Connection String (Bağlantı Nesnesi) Oluşturma:

ASP.NET Core’da veritabanı bağlantı nesnesi gibi konfigürasyon ayarları JSON konfigürasyon dosyasında saklanır. Şimdi veritabanıma bağlantı nesnesi oluşturabilmek için projemde oluşturulmuş olan appsettings.json file dosyasını aşağıdaki gibi düzenliyorum.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": { "MiniDukkanConnection": "Server=(localdb)\\DESKTOP-FIUL2TU\\SQLEXPRESS; Database=MiniDukkanDb, Integrated Security=true" }

  }

Dikkat ederseniz proje oluşturulduğunda bir de appsettings.Development.json adında bir konfigürasyon dosyası daha oluşturulmuş. Bunun var olmasının sebebi şu, projenin development aşamasındaki ayarları saklayabilmek için oluşturulmuş bir dosya. Şu aşamada detayına girmiyorum ama şöyle bilin yeter, biz projelerimizi deploy ettiğimizde az önceki yaptığımız gibi appsettings.json dosyasında mutlaka düzenleme yaparız. Şu anda local db’de çalışıyorum ama sanki uzak bir serverda çalışıyormuş gibi appsettings.json üzerinde düzenleme yaptım.

Böylelikle connetion string ile local db’de var olan MiniDukkanDb veritabanıma bağlanabileceğim. Entity Framework vasıtası ile veritabanım üzerinde de sorgularımı gerçekleştirebileceğim. Veritabanı bağlantısını yapılandırırken dikkat etmeliyiz, sizin kendi veritabanınıza göre bu connection string değişecektir, bunu göz ardı etmeyiniz.

Database Context Sınıfının Oluşturulması:

Entity Framework veritabanına erişebilmek için bir context sınıfına ihtiyaç duyar. Şimdi Models klasörü altında yeni bir Item olarak class ekleyelim adını da MiniDukkanContext.cs verelim. Bu sınıf içinde kodlarımı aşağıdaki gibi düzenliyorum.

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace MiniDukkan.Models
{
    public class MiniDukkanContext : DbContext
    {
        public MiniDukkanContext(DbContextOptions< MiniDukkanContext > options) : base(options)
        {

        }

        public DbSet< Urun > Urunler { get; set; }
    }
}

Burada yazdığım kodlar ile DBContext base classı ile Entity Framework kullanarak daha önce tanımlamış olduğum Models altında yer alan Urun classıma ve içindeki nesnelere erişebiliyorum. Görüleceği üzere MiniDukkanContext classım, DbContext base classımdan türemiştir ve uygulamamdaki verileri okumak ve yazmak için kullanılır. Şu anda MiniDukkanContext classım içinde tek bir property tanımladım, bununla da Urun classımda yer alan propertylere erişebiliyorum.

Startup.cs Dosyası İçinde Entity Framework Core Yapılandırması

Projemizde Strartup.cs dosyası üzerinde Entity Framework hangi bağlantı nesnesi ile işlemlerini gerçekleştirecek bunları belirtmeliyiz, bundan dolayı Startup.cs içinde kodlarımı düzenliyorum.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using MiniDukkan.Models;

namespace MiniDukkan
{
    public class Startup
    {
        public Startup(IConfiguration config)
        {
            Configuration = config;
        }

        public IConfiguration Configuration { get; set; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.AddDbContext< MiniDukkanContext >(opts => opts.UseSqlServer(Configuration["ConnectionStrings:MiniDukkanConnection"]));

          
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }
            app.UseStaticFiles();

            app.UseRouting();

            app.UseStatusCodePages();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
}

Yaptıklarımızı özetlersek, Iconfiguration Interface’i ile appsettings.json dosyamda belirttiğim konfigürasyonlar vasıtası ile ASP. NET Core yapılandırma sistemine erişim sağlıyoruz.

Burada yer alan constructor metot ile Iconfiguration’dan bir nesne türettim. Bu nesnenin içeriğini özelliğime atama işlemini yaptım.

AddDbContext metodu ile Entity Framework Core yapılandırmasını gerçekleştiriyoruz. Böylelikle veritabanına bağlanacağımız connection stringi burada veriyoruz.

UseSQLServer metodu ile de SQL Server’ın kullanıldığını ve bağlantı dizesinin IConfiguration nesnesi aracılığıyla okunduğunu bildiriyoruz.

Bir cevap yazın

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