.NET Core Class Library’de Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

Merhaba,

Bir ö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 kullanıldığını incelemiştik. Bu içeriğimizde ise yine .NET Core uygulamalarında Class Library içerisinde Database First yaklaşımının kullanımını inceleyeceğiz.

Başlarken

Herşeyden önce ilk olarak bir Solution içerisine Asp.NET Core MVC(WebApplication) uygulamasıyla birlikte .NET Core Class Library(DAL) projesi oluşturarak hali hazırda içeriğimize başlayabiliriz.
.NET Core Class Library'de Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

Kurulum

Class Library projesinde(DAL) Entitiy Framework Core – Database First yaklaşımını uygulayabilmek için;

paketlerini projemize yüklememiz gerekmektedir.
Bunun için aşağıdaki komutları tek tek Package Manager Console penceresinden çalıştırmanız yeterli olacaktır.

Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

İlk Girişim ve Olası Hatalardan Arındırma

İlgili paketleri projemize yükledikten sonra yapmamız gereken, ilk paragrafta referans olarak verilen adrestede belirtildiği üzere projeye(Class Library – DAL) Database First yaklaşımıyla mevcut veritabanını aşağıdaki direktif aracılığıyla yüklemeye çalışmaktır.

Scaffold-DbContext "Server=.;Database=Northwind;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
  • Olası Hata ve Çözümü
    Yukarıda verilen komutla veritabanını projeye çekmeye çalıştığınız zaman;

    Could not load assembly ‘DAL’. Ensure it is referenced by the startup project ‘WebApplication’.

    hatasıyla karşılaşabilirsiniz.
    İlgili hatanın görseli aşağıdaki gibidir;
    .NET Core Class Library'de Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

    Bu hatayı çözebilmek için yapmanız gereken işlemler; Class Library projesine(DAL) yüklenen paketlerin Asp.NET Core web uygulamasınada (WebApplication) yüklenmesiyle birlikte Class Library(DAL) projesinin .dll’ini web uygulamasına referans etmektir.
    .NET Core Class Library'de Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

    Bu işlemlerden sonra ilgili direktifi yeniden çalıştırdığımızda aşağıdaki ekran görüntüsünde olduğu gibi ilgili veritabanı Database First yöntemiyle projeye transfer edilmiş olacaktır.
    .NET Core Class Library'de Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

  • Artık veritabanımız Class Library projesinde (DAL) hali hazırda beklemektedir. İlgili context nesnesini web uygulamasına aşağıdaki gibi Dependency Injection ile register edip kullanmamız yeterli olacaktır.

        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?}"));
            }
        }
    

    Projeyi derleyip çalıştırdığımızda aşağıdaki ekran görüntüsünde de olduğu gibi veritabanına erişim başarıyla sağlanmakta ve verilerimiz elde edilmektedir.
    .NET Core Class Library'de Database First Yaklaşımı İle Mevcut Veritabanında Çalışma

Bu noktadan itibaren, her iki makale aracılığıyla Entity Framework Core mimarisinin Database First yapılanmasıyla nasıl kullanıldığına dair olası tüm soruların cevaplarını verebildiğimize ve siz değerli okuyucularımın meraklarını dindirdiğimize inanmaktayım.

İlgilenenlerin faydalanması dileğiyle…

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

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

*

Copy Protected by Chetan's WP-Copyprotect.