Entity Framework ve Code First Mimarisi – 2

Entity Framework ve Code First Mimarisi – 2

 10.7.2017 00:30:21  MVC 5  (0)

Şimdi projemizi veritabanımızla ilişkilendirmek için neler yapmamız gerekiyor onlara bakalım. Hatırlarsanız Entity Framework kullandığımızı söylemiştik, ama projemizi oluşturduğumuzda Empty Project seçtiğimiz için framework yüklü gelmedi. Hemen projemize Nuget Manager’ı kullanarak Entitiy Framework’u dahil edelim ve projemize devam edelim. Nuget Manager ne diyenler olursa, kısaca söylemek gerekirse .Net Framework için geliştirilen kütüphaneler ve diğer araç gereçlerin bulunduğu bir paket yöneticisi olarak düşünebilirsiniz. Projemiz için gereken paketleri hiç zorlanmadan Nuget Manager’ı kullanarak projemize dahil ediyoruz. Aşağıda da görmüş olduğunuz üzere projemize sağ tıklayarak Manage Nuget Packages seçeneğine girerek Entity Framework paketini bularak Install butonuna basıyoruz. Ben ilk açtığımda Entity Framework popüler olduğundan hemen ilk sırada geldi. Eğer Entity Framework’u göremezsiniz sarı ile işaretlediğim arama kutusuna paket adını da yazarak arayabilirsiniz.

Paketi yüklemek için Install butonuna bastığınız zaman sizden lisans kabul etmenizi isteyen ekran çıkarsa I Accept gibi bir seçenek olması gerek, onu seçerek projeye paketi ekleyebilirsiniz.

Şimdi projemize gerekli paketimizi yüklediğimize göre, sıra geldi veritabanı giriş bilgilerini projede tanımlamaya. Code First mimarisinde hoşuma giden özelliklerden birisi de veritabanı bağımsız oluşudur, bir önceki yazıda da bundan bahsetmiştik. Yani şöyle ki, bağlantı bilgilerini yazdığımız dosyamızda isterseniz Oracle için olan bağlantı cümleciğini yazarak projenizi zahmetsizce Oracle veritabanında da kullanabilirsiniz.

Entity framework’un  veritabanı ayarlarını projemizin dizininde bulunan web.config dosyamızda yapıyoruz. Web.config dosyasında <configsections> düğümünden sonra <connectionStrings>düğümünü açarak veritabanıyla ilgili bilgileri yazıyoruz. Ben lokalde çalıştığım için benim bilgilerim aşağıdaki gibidir, siz kendinize göre düzenleyebilirsiniz.

Burada <add… diyerek bir düğüm açtık ve veritabanı bilgilerini yazdık. Dilerseniz buraya bilgisayarınızda kurulu olan diğer veritabanlaları bilgilerini de yazabilirsiniz, tabii onlar için bu bağlantı cümleciği farklı olacak ama internette kolayca bulabilirsiniz. Şimdi buradaki değerlerin anlamından bahsetmek istiyorum. “add name” diyerek bağlantı cümleciğine bir isim verdim, buradaki ismi unutmayın çünkü bunu Context sınıfımızda kullanacağız, context sınıfını da birazdan yazacağız. “connectionString” değeri ise bizim veritabanımız için girmiş olduğumuz değerler. Bu değerler ne derseniz;

Data Source: Lokalde çalışacağımızdan . olarak yazdık, isterseniz localhost da yazabilirsiniz. Burada Data Source yerine Server etiketini de yazanlar da var bunu da burada belirtelim.

Initial Catalog: Veritabanımın adını burada veriyorum, burada yazdığım isim veritabanımın adı olacak.

Integrated Security: Veritabanımıza giriş için kullanıcı adı ve şifre seçeneğini girmek istemediğimden bu şekilde yazdım. Tabii siz uzak sunucuyla bağlantı kuracağınızda “User Id” ve “Password” etiketlerini de kullanarak o giriş bilgilerinizi girmeniz gerekmektedir.

Şimdi bu ayarları yaptığımıza göre kendimize bir context sınıfı yazalım. Context sınıfı ne diyecek olursanız veritabanımdaki tabloları yönetmek için bu Context’i kullanacağım, bununla da kalmayıp ileride tablolarımızda tablo adlarını, tablolarda bulunan sütunlarda isim, uzunluk vs. gibi değişikliker için bu sınıftan yararlanacağız. Daha birçok konuda ve sıkıntı da bu sınıf bizim yardımımıza koşacak, daha birçok özelliği var fakat burada yazıp, konudan uzaklaşmanızı istemiyorum. İlerleyen yazılarda bu sınıfın yararlarını siz de görecek ve aklınızdaki birçok soruya cevap bulacaksınız.

Şimdi ben Models klasörü altında Context adında bir klasör oluşturup içine CodeFirstContext(siz başka bir isim de verebilirsiniz) adında bir class oluşturdum. Ayrıca bu sınıfın DbContext sınıfını miras aldığını söyledim. DbContext sınıfını kullanabilmeniz için using bloğuna aşağıdaki yolu belirtmeniz gerekmektedir.

using System.Data.Entity;

 

using bloğunda daha önce de demiş olduğum kod bloğunu eklemeniz gerekmektedir yoksa DbContext sınıfını miras alamazsınız. Şimdi altını çizili kısımlara teker teker bakalım;

  1. DbContext sınıfı. Bu sınıfı kullanarak veritabanımızı yönetebilecek ve gerekli işlemleri yapabileceğiz.
  2. base() metodu ise hayati öneme sahip, yukarıda web.config kısmını anlatırken unutmamanız gereken ismi işte burada kullanıyoruz. connectionString de verdiğimiz ismi burada yazmalıyız ki DbContext sınıfı hangi veritabanında işlem yapacağını bilsin.
  3. Bu kısımda ise veritabanımız için yazmış olduğumuz sınıfları burada DbSet generic türünde yazıyoruz. Tablolarımıza ekleme, güncelleme ve silme işlemlerini bu oluşturduğumuz Context sınıfından yapacağımız için Context sınıfında olmayan tablolara erişemeyiz ve o tablolarda CRUD işlemlerini yapamayız.

Şimdi herşey tamam olduğuna göre artık bu çalışmamızı veritabanında görelim. Package Manager Console penceresini açalım, eğer siz de görünmüyorsa, View -> Other Windows altından tıklayıp açabilirsiniz. Burada migration işlemlerini yapmak için migration’ı aktif etmemiz gerekmektedir. enable-migrations yazıp enter tuşuna bastıktan sonra bir hatayla karşılaşmazsanız projenize Migrations diye bir klasör açıp Configuration adında bir class açacak.

enable-migrations

Configuration classı içerisinde AutomaticMigrationsEnabled = false; satırında false kısmını trueyapıp projeyi kaydedip derleyiniz. Burada bu özellikten bahsetmek istiyorum, otomatik migrasyon işlemini kendisinin yapmasını istediğim için true yaptım. Dilerseniz false olarak kullanabilirsiniz. Fakat bir değişiklik yaptığınızda Package Manager Console ekranından add-migration yazıp migrasyona bir ad vererek değişiklik yaptığınızı belirtmeniz gerekmektedir yoksa aşağıda bahsetmiş olduğum update-database komutunu yazdığımızda herhangi bir değişiklik olmayacaktır.

Ben true olarak değiştirdim ve Package Manager Console’u açarak update-database komutunu yazıp gönderdim.

update-database

update-database komutu veritabanına projede yapmış olduğum değişiklikleri yapmasını söylüyor. Değişiklikleri yaptıktan sonra veritabanımı açıyorum ve veritabanında değişiklikleri yapmış mı bakıyorum.

 

Gördüğünüz gibi veritabanına Personel ve Unvan tabloları geldi. Dikkat ettiyseniz tablo adları sonunda -s takısı var. Diğer sıkıntı ise tablo sütunlarında nvarchar veri tipi max olarak ayarlanmış. Bunlar istemediğimiz şeyler ve bunlarla ilgili neler yapabiliriz bir sonraki dersimizde bunlara bakacağız.

 

 Etiketler:

 Yorumlar

Yorum Gönder 

 Facebook Profil