Yazılım

Asp.Net Environment (Ortam) bilgisine göre Database ConnectionString (Veritabanı Bağlantı Cümlesi)

Geçen yıl geliştirmeye başladığımız birkaç bin adam/gün sürecek koca bir ERP uygulamasında, Web API projesinin yayınlandığı ortama göre Database ConnectionString‘e (Veritabanı Bağlantı Cümlesi) sahip olması gerekiyordu.

Örneğin, ConnectionStringDevelopment ortamında Development veritabanını, Test ortamında Test veritabanını, Stagingortamında Staging veritabanını, Production ortamında Production veritabanını göstermeliydi.

Eğer Asp.Net Core Web API uygulamasının, çalıştığı ortama göre (Environment) otomatik olarak ConnectionString bilgisini belirlemesini sağlayabilirsem, uygulamanın çeşitli ortamlara yayılması gerektiğinde, ConnectionString‘i güncelleme derdinden kurtulabilirdim.

Hatta, her developerın bilgisayarının isminin de ConnectionString‘te olmasını sağlayabilirsem, aynı anda geliştirme yapan birden fazla developer‘ın, birbirlerinin veritabanı değişikliklerinden etkilenmesini de engelleyebilirdim.

Bunu gerçekleştirmek için, öncelikle projede yeni bir AppDataContext.cs dosyası oluşturdum ve Microsoft.EntityFrameworkCorekütüphanesini kullanarak veritabanını ve tabloları modelledim;

Startup.cs dosyasında yer alan ConfigureServices() methoduna aşağıdaki kodları yazdım;

AddDbContextPool() methodu sayesinde, uygulamada AppDataContext sınıfı her gerektiğinde (Dependency Injection ve IoC – Inversion of Control yöntemleri ile) sağlanacak olan AppDataContext değişkenini yapılandırdım.

Burada dikkat edilmesi gereken nokta, SqlConnectionStringBuilder sınıfı sayesinde, varolan ConnectionString bilgisini değiştirip, yenisini oluşturabiliyoruz.

Environment bilgilerini kullanıp, hatta IsDevelopment() methodu ile gerekirse developer bilgisayarının ismini de kullanıp, yeni ConnectionString ürettim ve bu ConnectionString‘i UseSqlServer() methodu içerisinde kullandım.

Böylece farklı ortamlarda (EnvironmentConnectionString aşağıdakiler gibi oldu;

  • Database_Production
  • Database_Test
  • Database_Staging
  • Database_Development_Ahmet
  • Database_Development_Mehmet
  • Database_Development_Ayse

Son olarak, AppConnectionString değişkenini, appsettings.json dosyası içerisinde aşağıdaki gibi tanımladım;

 

 

 

 

 

 

Click to comment

CEVAP BIRAKIN

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

Copyright © 2018 Web Sitesi üzerinde yayınlanan tüm içerikler www.ogzblg.com sitesine aittir. Toplist 25

To Top