Asp.NET Core Uygulamalarında Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

Merhaba,

Bu güne kadar Asp.NET Core üzerine kaleme almış olduğumuz birçok makalede Entity Framework Core yapılanmasının Code First yaklaşımı üzerine içeriklerimizi oluşturmuş bulunmaktayız. Bu içeriğimizde ise Asp.NET Core uygulamalarında, Entity Framework Core – Database First yaklaşımının nasıl kullanılacağını ve böylece mevcut olan veritabanlarını kullanarak çalışmalarımızı nasıl gerçekleştirebileceğimizi inceleyeceğiz.

İlk Olarak

Anlatımlarımızı tatbik etmek üzere hali hazırda bir Asp.NET Core MVC uygulaması üzerinden seyredeceğiz ve makale sürecinde yapacağımız örneklendirmede istifade etmek için Northwind veritabanını kullanacağız.

Microsoft.EntityFrameworkCore.SqlServer Kurulumu

Entity Framework Core – Database First yaklaşımını kullanabilmemiz için Microsoft.EntityFrameworkCore.SqlServer kütüphanesini projemize yüklememiz gerekmektedir. Bunun için aşağıdaki kodu çalıştırarak .NET CLI yardımıyla ilgili kütüphaneyi projeye ekleyebiliriz. ilgili kütüphane makaleyi kaleme aldığım tarihte 2.2.4 versiyonundadır.

dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 2.2.4

Asp.NET Core Uygulamalarında Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

Database First İle Hazır Veritabanını Projeye Çekelim

Bu adıma kadar yapılan işlemlerden sonra artık Database First yöntemini kullanarak SQL Server’da ki veritabanını projemize include etmek için hazırız.

Yapılması gereken “Package Manager Console” penceresini açarak aşağıdaki direktifi çalıştırmaktır.

Scaffold-DbContext "Server=.;Database=Northwind;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

İlgili direktifi çalıştırdığımız zaman providerdaki veritabanı projeye taşınmakta ve aşağıdaki ekran görüntüsünde olduğu gibi oluşturulan context sınıfı direkt olarak açılmaktadır.
Asp.NET Core Uygulamalarında Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

Ekran görüntüsüne tekrar bakıp Solution Explorer penceresindeki dosyalarda şöyle bi gözümüzü gezdirirsek göreceğiz ki entityler oluşturulmuş ve context sınıfıda aralarına eklenmiştir. Burada dikkat edilmesi gereken nokta şudur ki; standart Entity Framework’te olduğu gibi gerekli konfigürasyon ayarları sağlayan ve tablolar arası ilişkileri gösteren bir “.edmx” uzantılı dosya bulunmamakta, direkt olarak sınıfsal bazlı nesneler üzerinden işlemler gerçekleştirilmektedir.

Ayriyetten veritabanı güncellemelerinde son durumu tekrar çekebilmek için ilgili direktifi -force parametresi ile vermemiz yeterlidir.

Scaffold-DbContext "Server=.;Database=Northwind;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force

Context’i Dependency Injection İle Register Edelim

Tüm bu işlemlerden sonra sıra Dependency Injection ile context nesnemizi uygulamaya register etmeye gelmiş bulunmaktadır. Aslında bu önceki makalelerimizden bildiğimiz ve uyguladığımız bir yöntemdir. İlgili makaleler için; Asp.NET Core 2 MVC’de Dependency Injection, Asp.NET Core 2 MVC’de Migrations İle Veritabanı İşlemleri

Dependency Injection ile context sınıfımızı uygulamaya register edebilmek için Startup dosyası içerisindeki “ConfigureServices” metodunda aşağıdaki kodları yazıyoruz.

    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<NorthwindContext>(_ => _.UseSqlServer("Server=.;Database=Northwind;Trusted_Connection=True;"));
            services.AddMvc();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
                app.UseDeveloperExceptionPage();

            app.UseMvc(_ => _.MapRoute("Default", "{controller=Home}/{action=Index}/{id?}"));
        }
    }

Kullanımı

Artık bu noktadan itibaren geriye context nesnesini Dependency Injection ile talep ederek ilgili controllerda gerekli veritabanı işlemlerini gerçekleştirmek kalmıştır.
Asp.NET Core Uygulamalarında Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

Ve evet… Yukarıdaki ekran görüntüsünde olduğu gibi Database First yaklaşımını kullanarak Asp.NET Core uygulamalarında mevcut veritabanımız üzerinde işlemlerimizi gerçekleştirmiş bulunmaktayız.

İşte bu kadar basit 🙂

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. 11 Mayıs 2019

    […] önceki Asp.NET Core Uygulamalarında Database First Yaklaşımı İle Mevcut Veritabanında Çalışma başlıklı yazımda Asp.NET Core uygulamalarında Database First yaklaşımının nasıl […]

Bir cevap yazın

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

*

Copy Protected by Chetan's WP-Copyprotect.