DBCONTEXT NEDİR? DBCONTEXT CLASSIMIZIN OLUŞTURULMASI

DbContext bir classtır ve Entity Framework’un olmazsa olmazıdır. DBContet veritabanımızla uygulamamız arasında sorgulama, güncelleme, silme gibi işlemleri yapmamız için olanak sağlar. Yani veritabanı içinde yer alan verilerimizle alakalı olarak her türlü süreçte iletişimimizi sağlayan bir classtır.

Detaylı ders anlatımı için video:

DbContext bize ne sağlar?

  • Database bağlantısının yönetimi,
  • Modellerimiz ve database ilişkilerinin yönetimi,
  • Database sorguları yönetimi,
  • Database veri kaydetme işlemleri,
  • Değişikliklerin izlenebilmesi,
  • Transaction (işlem) yönetimi,
  • Caching (Önbellek işlemleri)

Biz bu kendi uygulamamıza ait olacak dbcontext classı entity framework içinde var olan DBContext üzerinden türeteceğiz. Entity framework içinde yer alan bu class aslında her bir varlık yani entity veya her bir model için DBSet barındırır.

Peki dbcontext classımızı nasıl oluşturacağız?

Bunun için projemize gelip, GRSYKitapEvi_DataAccess katmanım altında yer alan Data klasörüne sağ tıklıyor ve yeni bir class ekliyorum. Bu classıma isim verirken istediğim ismi verebilirim ancak standardı sağlamak adına bence DbContext classınız için ApplicationDbContext adını kullanın. Aynı şekilde isimlendiriyorum.

Kodlarımızı yazalım:

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)
        {

        }
    }
}

Burada ApplicationDbContext classımız, EF Core içinde yer alan DbContext classından türetildi. Akabinde bir constructor oluşturduk.

Şimdi startup.cs’ye gidip ConfigureServis alanında ilgili classımızı tanımlayalım.

using GRSYKitapEvi_DataAccess.Data;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace GRSYKitapEvi
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext< ApplicationDbContext >(options => options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")
            ));
            services.AddControllersWithViews();
        }

        // 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");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

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

Bir sonraki derste görüşmek üzere..

Bir cevap yazın

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