ASP.Net Core Projelerinde Code-First Yaklaşımı ile Entity Framework Core Veri Tabanı Oluşturulması
Herkese Merhaba; bugün Medium’daki ilk yazımda , sıfırdan oluşturduğumuz bir Asp.Net Core MVC web projemizde code-first yaklaşımıyla Entity Framework Core ile projede kullanacağımız veritabanının oluşturulma işlemlerinin nasıl gerçekleştirildiğini basit bir örnek üzerinden dilim döndüğü kadarıyla aşama aşama sizlere anlatmaya çalışacağım. Umarım faydalı bir yazı olur. Keyifli Okumalar.
- Öncelikle kısaca Entity Framework ve ORM kavramından bahsetmek istiyorum. ORM kavramı , Object Relational Mapping anlamına gelmektedir. ORM araçları sayesinde, nesneye yönelik programlama yaklaşımı ile yazılmış programların nesne modellerinden faydalanılarak kolay bir şekilde veritabanı tabloları oluşturulabilir.
Biz de bu yazıda, Asp.Net Core MVC 3.1 versiyonu’nda Entity Framework Core’u kullanarak, yazacağımız modellerimizi direkt birer veritabanı tablolarına çevireceğiz.
- Şimdi küçük bir dükkan için bir veritabanı tasarlayacağımızı varsayalım. Bu veritabanında dükkandaki ürünleri ve alışveriş yapan müşterileri tutmayı planlıyoruz.
- En başta şunu söylemek isterim ki bu işlemi yapmanın birçok yolu var. Ancak ben en kolay ve en anlaşılır olarak bu yöntemi görüyorum ve sürekli böyle yapıyorum sizlere de bu yöntemi anlatmayı tercih ettim.
- Öncelikle sıfırdan oluşturduğumuz Asp.Net Core MVC projemizin sağ tarafındaki Solution Explorer sekmemizdeki Models klasörü altına, veritabanı tablosunu oluşturmak istediğim model sınıflarım olan müşteri(customer) ve ürün(product)sınıflarımı yazıyorum;
- Daha sonra Visual Studio‘nun arama kısmından Manage NuGet Packages isimli sekmeye erişerek Entity Framework bağlantısı için gerekli olan; 1.Microsoft.EntityFrameworkCore.SqlServer ve 2.Microsoft.EntityFrameworkCore.Tools paketlerini indiriyoruz.
NOT: Projenizin .Net Core versiyonu ile paketlerin aynı versiyonlarını indirmeye dikkat edin. Benim projem 3.1 versiyon olduğu için paketlerin 3.1 versiyonlarını indirdim.
Şimdi sıra ,projemizdeki modellerimiz ile oluşturacağımız veritabanı arasında, bize köprü görevi görecek olan Context sınıfımızı oluşturmada.
- Solution Explorer’ da projeme Context isimli bir dosya ekliyorum ve bu dosyanın içinde CompanyContext isimli bir sınıf oluşturuyorum.
- Bu sınıf aracılığıyla projemdeki modellerimi, oluşturacağım veritabanımdaki tablolarla ilişkilendirebileceğim.
- Oluşturduğumuz sınıfın bir Context sınıfı olduğunu belirtmek için DbContext sınıfından kalıtım alıyoruz.
- Bu kalıtım aldığımız sınıf sayesinde bize veritabanı bağlantı konfigürasyonlarını yapmamızı sağlayacak OnConfiguring metoduna erişiyoruz. Bu metodu override edip ardından resimde de belirttiğim gibi optionsBuilder.UseSqlServer() metodunu çağırıp, parametre olarak sırasıyla veritabanı server ismimizi, veritabanına vermek istediğimiz ismi ve erişim sorunlarının önüne geçmek için gerekli kod bloğunu yazıyoruz.
- Bu sınıfta yaptığımız diğer önemli iş ise; Veritabanında tablo olarak oluşmasını istediğimiz modelleri DbSet türünden birer property olarak tanımlıyoruz ve isimlendiriyoruz.
Not: Sizin veritabanı server isminiz benden farklı olacaktır. Kendinizinkini, Visual Studio’nun arama kısmına SQL Server Object Explorer yazarak açılan sekmedeki SQL Server başlığının altından öğrenebilirsiniz.
- Artık tek yapmamız gereken Migration işlemini tamamlamak.
- Öncelikle Visual Studio’nun üst sekmesinden Tools>NuGet Package Manager>Package Manager Console yolunu izleyerek gerekli konsolumuzu açıyoruz.
- Açılan konsola görseldeki gibi add-migration initialCreate yazarak ilk migration’umuzu ekliyoruz. Ayrıca initialCreate ismi de bize bunun ilk migration olduğunu belirtiyor.
- Bu işlemi yaptıktan sonra otomatik olarak, Solution Explorer’ da şu ana kadar yaptığımız migration isimlerini ve içeriklerini gösteren Migrations isimli bir klasör oluşacaktır.
- Bu işlem ardından son olarak konsola aşağıdaki görselde gösterildiği gibi update-database komutunu girip enter’leyerek veritabanı oluşturma işlemimizi sonlandırıyoruz.
NOT: Eğer veritabanında herhangi bir güncelleme yapmak isterseniz, yine konsolu açarak sırasıyla add-migration migration_adi ardından update-database diyerek işlemi sonlandırabilirsiniz. İlk migrationda olduğu gibi bu migrationu da Solution Explorer’daki Migrations isimli klasöründe göreceksinizdir.
- Eğer siz de Done. yazısını gördüyseniz tebrikler, veritabanınız başarıyla oluştu demektir :)
- SQL Server Object Explorer’dan da kontrol ettiğimizde veritabanımızın ve tablolarımızın yukarıdaki görsellerdeki gibi başarılı bir şekilde oluştuğunu görebiliriz. Veritabanı isminin, CompanyContext sınıfımızda verdiğimiz gibi CompanyDB ismi ile oluştuğunu, oluşan tabloların DbSet türünden tanımladığımız propertylerin ismiyle oluştuğunu ve yine aynı sınıfta DbSet türünden property olarak verdiğimiz Customer sınıfının propertylerinin direkt birer veritabanı sütunlarına dönüştüğünü görebilirsiniz. Artık Controller’larınızı oluşturarak CRUD işlemlerinizi yapmaya başlayabilirsiniz.
Böylelikle ilk Medium makalemin sonuna geldim. Güzel bir başlangıç olduğunu düşünüyorum. Umarım okuyan herkes için faydalı olmuştur. Bu yazıyı buraya kadar okuyan herkese sonsuz minnettarım. Bir başka yazıda görüşmek üzere, hoşcakalın.