Merhaba arkadaşlar, bu yazımızda sizlere Entity Framework’den bahsedeceğiz.
Entity Framework, ilişkisel veri tabanları ile nesneye yönelik programlama arasında bir köprü görevi görür. Veri tabanı işlerimizi büyük ölçüde kolaylaştıran bir yapıdır. Program sırasında oluşturduğumuz nesneyi veri tabanındaki tabloya bağlayan ve veri alışverişini sağlayan bir tekniktir. Yapısı itibariyle MVC mimarisine uyan bir sistemdir. Arka planda Ado.Net sınıflarını kullanarak veri tabanı işlerimizi tamamen kodlar içerisinde halledebildiğimiz bir kolaylık sağlar. Dilerseniz, basit bir form uygulaması ile veri tabanındaki verileri listeleyerek anlamaya çalışalım.
Öncelikle bir proje oluşturuyoruz.
Oluşturduğumuz proje Windows Form uygulaması olacak. Bu yüzden Windows Forms(.NET Framework)’u seçiyoruz.
Verilerin getirileceği alan için bir adet Toolbox >Data>DataGridView’i ekrana şekildeki gibi sürüklüyoruz. Eğer Toolbox sizde görünmüyorsa View menü barından Toolbox’a tıklayarak görünmesini sağlayabilirsiniz.
DataGridView için Properties>(Name) kısmından “dgwProducts” olarak isimlendirdim. Farklı isimlendirmeler kullanabilirsiniz.
Veri tabanı olarak Northwind’in veri tabanını kullanacağım. Dilerseniz, kendi veri tabanınızı oluşturabilir veya bu linkten Northwind veri tabanını indirip projenize bağlayabilirsiniz. İndirdiğimiz veri tabanı oluşturma kodunu “new query”(yeni sorgu) seçeneğine tıklayarak yapıştırıyoruz ve execute(yürüt) ediyoruz. Eğer sizde SQL Server Object Explorer görünmüyorsa, View menü barından SQL Server Object Explorer’a tıklayarak görünmesini sağlayabilirsiniz.
Entity Framework’de veri tabanını yapılandırmak için en temel basamak bir “DbContext” sınıfı oluşturmaktır. Bunu yapmak için projemizde sağ tıklayarak bir sınıf ekliyoruz.
Bu sınıfın adını “NorthwindContext” yapıyoruz. Ben veri tabanı olarak Northwind’i kullandığım için DbContext sınıfının adını “NorthwindContext” yaptım.
Sınıfımızı “public” yapmayı unutmuyoruz. Bunu yapmamızın sebebi ise, diğer sınıflardan bu veri tabanı sınıfına ulaşmak istememizdir.
Ek olarak projeye Entity Framework kütüphanesini dahil etmemiz gerekiyor. Bunun için projeye sağ tıklayıp “Manage NuGet Packages” kısmından Entity Framework kütüphanesini projemize dahil ediyoruz.
“Browse” sekmesinden “Entity Framework” yazdıktan sonra “install” ederek kütüphaneyi projemize dahil ediyoruz.
“NorthwindContext” sınıfının bir veri tabanı nesnesi yani “DbContext” olabilmesi için “NorthwindContext” sınıfımızın “DbContext ” sınıfından kalıtılması lazım. Bunun için System.Data.Entity kütüphanesini sınıfa dahil etmemiz gerekiyor.
Projemizdeki nesnelerin hangi veri tabanı tablosuna bağlayacağımızı burada belirtmemiz gerekiyor. ”Benim şöyle bir nesnem var o da veri tabanındaki şu tabloya karşılık geliyor” diyebilmemiz lazım. Şimdi proje üstünde bir klasör oluşturuyoruz bu klasörün adı “Entities”(varlık) olacak.
Bu klasöre sağ tıklayarak bir sınıf ekliyoruz.
Bu sınıf veri tabanımızdaki tabloya karşılık gelecek olan nesnenin kendisidir. Ben bu sınıfın adını “Product”(Ürün) yaptım çünkü benim veri tabanımda “Products“(ürünler) adında bir tablo var. Bu tablonun kolonlarını bu sınıfa özellik olarak ekliyorum. Sınıfı “public” yapmayı unutmuyoruz.
Şimdi NorthwindContext sınıfında bir DbSet<> oluşturuyoruz. DbSet, “Product”(ürün) içindir. Bu şu demek “Benim elimde product(ürün) var ve bu product veri tabanındaki Products’a(ürünlere) karşılık geliyor. Bunu yaparken de using kısmına EntityFramework.Entities’i eklememiz gerekiyor.
EntityFramework.Entities’i kullanarak NorthwindContext sınıfımızın veri tabanındaki Products tablosuna erişimini sağlıyoruz.
EntityFramework.Entities’i kullanarak NorthwindContext sınıfımızın veri tabanındaki Products tablosuna erişimini sağlıyoruz
Entity Frameworkle ilgili son konfigürasyon projenin içinde App.Config kısmındadır. Veri tabanı nesnesini kurmuş ve DbContext sınıfından kalıtmış olabiliriz fakat projemizin veri tabanına ulaşabilmesi için bir adet ConnectionString’e (Bağlantı uzantısına) ihtiyacı var.
Öncelikle adını vermemiz lazım. Name, Context sınıfının adıdır. ConnectionString etiketleri arasında data source(veri kaynağı) diyerek kendi veri tabanımızın adını yazarız. Herkesin bağlantı ismi farklı olabilir. Bu server’da hangi veri tabanına bağlanmamız gerektiğini ise initial catalog ile belirliyoruz. Integrated security seçeneğini true olarak ayarlıyoruz. Bu da ben bu bilgisayara login(oturum açtığım) olduğum hesap ile veri tabanına bağlanabiliyorum demek. Son olarak providerName’ini vererek etiketimizi kapatıyoruz.
Veri tabanı ile ilgili ayarlarımızı tamamladık, şimdi ise form uygulamamıza geçebiliriz.
Formun üstüne çift tıklayarak Form1’in Form1_Load metoduna gidiyoruz.
Burada veriler görüntülenecek. Using bloğu sayesinde NorthwindContext sınıfını kalıtarak bir “context” nesnesi oluşturuyoruz. Burada amacımız DataGridView’da tüm ürünleri listelemek.
Daha sonrasında oluşturduğumuz “context” nesnesinden veri tabanındaki Products tablosundan verileri çeken ve bunları listeleyen metodu yazıyoruz.
ToList() metodu verilerin listelenmesini sağlar. Bu metoda NorthwindContext sınıfımızı “DbContext” sınıfından kalıttığımız!! için kullanabiliyoruz.
Son olarak projeyi çalıştırdığımızda ,veri tabanındaki “Products”(ürünler) tablosundaki verilerin form uygulamamızda ekrana yansıdığını göreceğiz. Görmüş olduğunuz gibi fazla çaba harcamadan verilerimizi form üzerinden listeledik. Entity Framework’ü form ve web uygulamalarınızda rahatlıkla kullanabilirsiniz.
Çalışmanın tamamlanmış haline buradan ulaşabilirsiniz .
İşinize yaraması dileğiyle..
Ümmühan Kurt
Kaynaklar :