.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.
Kurulum
Class Library projesinde(DAL) Entitiy Framework Core – Database First yaklaşımını uygulayabilmek için;
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Tools
- Microsoft.EntityFrameworkCore.SqlServer.Design
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;
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.
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.
-
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.
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…
.net core db first yaklasimi ile stored procedure , functions , trigger gibi seylerimizi nasil getirip kullanabiliriz?
Merhaba,
Entity Framework Core üzerinden Stored Procedure nasıl oluşturulur? sorusunun cevabını vereceğim. Functionlar için buradan aldıklarınızı genelleyiniz.
Boş bir migration oluşturunuz ve içerisine Stored Procedure’u aşağıdaki gibi yerleştiriniz.
14. satırda olduğu gibi yazılan Stored Procedure kodlarını migrationBuilder.Sql diyerek çalıştırınız. Ayriyetten bu komutun Stored Procedure dışında tüm sql komutları çalıştırdığına dikkatinizi çekerim.
Bu migration’ı migrate ediniz.
FromSqlRaw fonksiyonu ile ilgili Stored Procedure çağrılır ve kullanılır.
Parametreli Stored Procedure’lara SqlParameter nesnesi üzerinden de aşağıdaki gibi parametre değeri gönderilebilir.
Ek olarak;
Ham sorguları direkt olarak çalıştırmak istiyorsanız ‘ExecuteSqlCommand’ metodunu kullanabilirsiniz.
Kolay gelsin.
Merhaba hocam , nasıl çözebilirim
Error Number:4060,State:1,Class:11
Cannot open database “Northwind” requested by the login. The login failed.
Login failed for user ‘DESKTOP-7S1L2OC\efsan’.