Bir .NET Core Uygulamasına DbContext Ekleme

Bir .NET Core uygulamasına Entity Framework Core context’i eklemek için aşağıdaki adımları sırayla takip edelim.

Öncelikle Web uygulamamızı oluşturalım. Oluşturduktan sonra uygulamamızın ismine sağ tıklayarak “Manage Nuget Packages” seçeneğini ve ardından Browse(Gözat) sekmesini tıklayalım.

Uygulamamız .Net Core olduğu için “Microsoft.EntityFrameworkCore” adlı paketi kurmalıyız. İsmini arama kısmına girerek ve doğru olanı bulduğumuzdan emin olarak kuralım. Kullanacağınız veritabanı için uygun adaptörü de kurmayı unutmayın. Eğer SQL Server kullanacaksanız “Microsoft.EntityFramewokCore.SqlServer” isimli paketi kurun, farklı bir veritabanı kullanacaksanız isminde core olduğundan emin olun.

Şimdi oluşturma adımlarına geçebiliriz.

Öncelikle henüz yoksa “Data” isimli bir klasör oluşturalım.

Ardından bu “Data” klasörüne “ApplicationDbContext” isimli bir C# “class”‘ı oluşturalım. İçeriğini şimdilik şu şekilde ayarlayalım;

public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
        {

        }
        

       
    }

Dikkat ettiyseniz bu sınıfımız “DbContext” isimli bir başka sınıftan “inheritance (kalıtım)” yapıyor. Bu kalıtım bir .Net Core uygulamasına Entity Framework Context eklerken var olmak zorundadır, çünkü DbContext sınıfı uygulama geliştirirken kullanacağımız gerekli özellikleri ve methodları içermektedir. En tepeye de aşağıdaki satırı ekleyelim, bu satır yukarıda kalıtım sağladığımız “DbContext” isimli sınıfın “namespace” ini çağırır, çağırmazsanız hata alırsınız;

using Microsoft.EntityFrameworkCore;

Bir şey daha dikkatiniz çekmiş olmalı, şu kısım;

 public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
        {

        }

Dikkat ederseniz bu bir “constructor” yapısı. Bu şekilde olduğundan emin olalım.

Sıra uygulamamıza asıl olarak ekleme kısmına geldi. Buraya kadar yaptıklarımızı bir nevi hazırlık olarak düşünebiliriz. Uygulama klasörümüzde bulunan “Startup.cs” isimli dosyayı bulup açalım. Bu dosyadaki “ConfigureServices” methoduna gelelim. İçeriği muhtemelen şöyle gözüküyordur.

public void ConfigureServices(IServiceCollection services)
        {
            // burada seçtiğiniz uygulama tipine göre çeşitli servisleri çağıran ifadeler vardır. Oluşturduğumuz sınıfı buraya bir method aracılığıyla ekleyeceğiz.  
        }

Bu methodun içeriğinin aşağıdaki şekilde olduğundan emin olalım. Yine dikkat ederseniz “AddDbContext” methodumuza “type” olarak oluşturduğumuz “ApplicationDbContext” isimli sınıfı veriyoruz, ardından bir lamda ifade ile bu methodu da konfigüre ediyoruz(options => { } kısmı).

public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<ApplicationDbContext>(
            options =>
            {
             options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
            });
            //..
            //..

            //..
        }

“options.UseSqlServer” kısmı hangi veritabanı adaptörünü kullanacağınıza göre değişir, eğer farklı bir veritabanı kullanıyorsanız uygun olan adaptörü vermelisiniz. Veritabanı bağlantısı için bir “ConnectionString” ‘e ihtiyaç duyduğumuzdan bunu da “UseSqlServer” isimli methoda vermemiz gerekir, bunu yaparken Startup.cs’de bulunan “IConfiguration” isimli “interface” ‘in “GetConnectionString” methodunu kullanarak yapıyoruz. Şu kısım yani;

Configuration.GetConnectionString("DefaultConnection")

Burada “DefaultConnection” ismi uygulamamızda bulunan “appsettings.json” adlı dosyadan geliyor, onun içeriği de şöyle olmalı(sadece ConnectionStrings kısmını kastediyorum);

"ConnectionStrings": {
    "DefaultConnection": "Burada uygulamanızda kullanacağınız Connection String olmalı"
  }

Eğer Visual Studio eklediğimiz kısımlarda hata gösteriyorsa, “Ctrl+.” kombinasyonunu kullanarak ilgili “namespace” i çağırmamız gerekir veya en tepede using ile başlayan kısıma aşağıdaki satırları ekleyebilirsiniz.

using Microsoft.EntityFrameworkCore;  // UseSqlServer methodunu bu namespace'den çağırıyoruz

using Uygulamaismi.Data;             // ApplicationDbContext sınıfını çağırıyoruz

// uygulama ismini kendi verdiğiniz isim ile değiştirmeyi unutmayın.

About the author

Yasin Sunguray

Add comment

Categories

Yasin Sunguray

Hi there,

I write about mostly backend development, you can browse posts about C++, Laravel, .NET, C#, SQL, Vue, React and a few other topics.