30 Mart 2014 Pazar

Entity Framework Temel Database İşlemleri

   Merhaba Arkadaşlar;

   Bu hafta geçen hafta sözünü ettiğimiz Entity Framework konusunda ekleme arama ve güncelleme işlemlerini yapacağız. Bunun için geçen haftadan gösterdiğimiz şekilde bir DataModel oluşturup bu DataModeller üzerinden işlemlerimizi yürüteceğiz. 

  • Yeni Kayıt Ekleme

   Örneğimizi Windows Form application üzerinden yapmak için yeni bir form oluşturalım. Oluşturduğumuz formu add işlemi için kullanacak olursak aşağıdaki kod bloğunu kendi kodumuza uyarlayıp eklememiz gerekecek.

   Oluşturacağımız forma bir adet TextBox , iki adet DataTimePicker ve bir adet de button koyalım ve idlerini aşağıdaki gibi değiştirelim.

Textbox : txt_AboneAdi
        DateTimePicker1 : dt_Baslangic
        DateTimePicker2 : dt_bitis
        Button : btn_kaydet

Figür 1 : Add Genel Ekran
  Yeni bir kayıt eklerken buttonumuzun Click metodunu aşağıdaki gibi düzenlememiz gerekecek.


 TNM_Abone nesnesine aldığımız kaydı veritabanımıza kaydettik ve veri modelimizi oluştururken eklediğimiz TNM_Abone tablosunu nesne olarak nasıl kullanabileceğimizi bu örnekle göstermiş olduk.

  • Kayıt Güncelleme İşlemleri

   Kayıt güncellemek için ise iki farklı ekrana ihtiyacımız olacak. Bu ekranlardan ilki sistemimizde kayıtlı ve önceden var olan müşterileri gösterecek. Diğer ekran ise asıl güncelleme işleminin yapılacağı ekran olacak. Bu ekranda müşterilerin bilgileri olacak ve değiştirmek istediğimiz müşteri bilgilerini bu ekran üzerinden değiştireceğiz.

   İlk ekran görüntüsü şu şekilde olacak.

Figür 2 : Update Genel Ekran
   Bu ekran üzerinde seçtiğimiz abone ID kodunu diğer ekrana aktarıp, ilgili abone ile işlem yapmak için diğer ekranı kullanacağız.(ID aktarımı işlemini gelecek haftalarda ayrıntısı ile anlatacağım). ID sini aktardığımız abone bilgileri otomatik olarak diğer ekranı dolduracak ve değişiklikler yapıldıktan sonra ise update butonuna basıldığında yapılan değişiklikler sisteme kayıt olacaktır.

Figür 3 : Update Edilecek Abone
   DataGridView'dan alınan ID bu ekrana aktarıldı ve ilgili değişmeler ilgili ID'ye sahip abone kaydı üzerine işlendi.


   Update işlemi tamamlandıktan sonraki görünüm ise şu şekildedir.

Figür 4: Update Sonraki Görünüm
  • Kayıt Arama İşlemleri
   Veritabanımızdaki kayıtlar üzerinde arama yapabilmek için öncelikle kayıtları gösterebilceğimiz bir DataGridView'e ve arama yapacağımız abone bilgilerini girmek içinse bir TextBox'a ihtiyacımız olacak.

   DataGridView : dg_Abone
        TextBox : txtAra

  Arama işlemi ile ilgili kodlamaları yapmadan önce datagridview'e istediğimiz tablo bilgilerini nasıl getireceğimizden bahsetmek istiyorum.  LINQ, Entity Framework ile oluşturulan tüm veritabanı nesneleri için kullanılabilmektedir. LINQ içinde metodlar bulunmaktadır. Datagridview'i istediğimiz bilgilerle doldurmak için kullanacağımız metod ise, foreach döngüsüne giren tüm yapılarda kullanılabilir. Bir örnekle açıklamak istersek:
   
   List<Abone> lst_Abone = new List<Abone>();


   Artık arama işlemiyle ilgili kodlamaları yapabiliriz. TextBox'in TextChanged event özelliğini kullanarak metodumuzu oluşturuyor ve gerekli kodlamaları yapıyoruz. TextChanged event'i ile ilgili daha ayrıntılı bilgiye buradan ulaşabilirsiniz.





Figür 5: Arama Ekranı
   Bu hafta temel örnekler vererek ekleme , güncelleme ve arama işlemlerini yapmaya çalıştık. Gelecek hafta bu hafta biraz bahsettiğimiz LinQ'yi teknolojisi üzerinde duracağız. Daha ayrıntılı bilgilerle LinQ'yi teknolojisini tanımaya çalışacağız. Bu haftaki yazımı burada sonlandırıyorum. 

Takipte kalmanız dileğiyle...

Referanslar:

23 Mart 2014 Pazar

Entity Framework Projesi ve Data Model Oluşturma

   Merhaba arkadaşlar,

   Geçtiğimiz hafta Entity Framework konumuza Entity Framework yapısı ve sağladığı faydalarına değinerek bir giriş yaptık. Bu hafta ise Entity Framework'ü nasıl projelerimizde kullanacağımızı ve yeni bir Data Model oluşturmayı göreceğiz.

   Yeni bir proje ve Data Model oluşturmak için bir veritabanına ihtiyacımız olacak. İsterseniz proje oluşturmadan hazır bir veritabanını Sql Server'a eklemeyi öğrenelim. İlk başta şu linkten AdvantureWorkDW'yi indiriyoruz. İndirme işlemi tamamlandıktan sonra dosyaları "C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA"(Bu uzantı farklılık gösterebilir fakat genel itibariyle benzer olacaktır.) uzantısına kopyalıyoruz. Daha sonra Sql Serverdaki Object Explorer kısmında bulunana Databases'a sağ tıklayıp 'Attach' diyoruz. 

Figür 1: Attach Database
   Karşımıza gelen ekranda Add butonuna tıklayıp AdventureWorksDW2012_Data.mdf seçiyoruz. Böylelikle veritabanı ekleme işlemini tamamlıyoruz.

Figür 2: Dosya Seçme

   Veritabanımızı ekledikten sonra şimdi gelelim yeni bir proje oluşturmaya. Visual Studio 2012' de EntityFrameworkDeneme adlı bir proje oluşturalım. Solution Explorer kısmından oluşturduğumuz projeye sağ tıklayıp sırasıyla Add -> New Item dedikten sonra çıkan pencerede sol kısımda bulunan Visual C# items seçeneklerinden 'Data' yı seçiyoruz. 'ADO.NET Entity Data Model' sekmesine tıkladıktan sonra dilersek adını değiştirerek 'Add' butonuna basıyoruz.

Figür 3: Data Model Oluşturma

   Yukarıda anlattığımız işlemi yaptıktan sonra karşımıza iki farklı seçenek bulunan bir ekran çıkacak. Bu seçeneklerden ilki 'Generate from database' diğeri ise 'Empty model'. Generate from database seçeneğini daha önceden hazırlanmış bir veritabanı kullanacaksak ve bu veri için model oluşturacaksak seçiyoruz. Empty model ise önce model oluşturup daha sonra veritabanı işlemleri yapacaksak seçilir. Biz Sql Server'a eklediğimiz veritabanı kullanacağımız için Generate from database seçeneğine tıklayıp bir sonraki adıma geçiyoruz.

Figür4: Model Contents Seçme

   Şimdi gelelim bir sonraki adıma. Data Model Contents' i seçtikten sonra hangi veritabanı kullanacağımızı seçmemiz gerekecek. Bunun için eğer daha önce kullandığımız seçeceksek ilgili bölümde veritabanı ismini seçip ilerleyebiliriz. Fakat ilk kez kullanacağımız bir veritabanı olacaksa bunun için 'New Connection' seçeneğinden istediğimiz veritabanı ile bağlantı kurabiliriz.

Figür 5: Veritabanı ile Bağlantı kurma

   'Next' butonuna bastıktan sonra eğer kullanmak istediğimiz veritabanı projemizde yoksa karşımıza bir uyarı penceresi çıkacaktır. Bu uyarı penceresindeki ibare bizi kullanmak istediğimiz veritabanının seçili projede bulunmadığını ve veritabanını projeye kopyalayıp kurulu bağlantıyı güncellemek isteyip istemediğimizi soracaktır.

Figür 6: Uyarı Ekranı

   Şimdi de geldik objesini oluşturmak istediğimiz tabloları seçmeye. Bunun için 'Next' butonuna bastıktan sonra karşımıza gelen ekrandan 'Tables' bölümünü seçiyoruz. Bağlantısını kurduğumuz veritabanının tablolarına bu bölümden ulaşıyoruz. Data Modelini oluşturmak istediğimiz tabloları tek tek seçip 'Finish' butonuna basıp Data Model oluşturma işlemini bitiriyoruz.

Figür 7: Data Model Oluşturmayı Tamamlama

   Data Model oluşturmayı da tamamladıktan sonra şimdi Visual Studio' da görünüm nasıl olacak bir de ona göz atalım.'Finish' butonuna basınca gelen ekranda modelini oluşturmak istediğimiz tablolar belirecek ve aşağıdaki gibi olacak. 

Figür 8: Son Visual Studio 2012 Görünüm

   Eğer MS SQL' de Data Model oluşturduğumuz tablolarda herhangi bir değişiklik yaparsak bunu Visual Studio'ya bildirmemiz gerekir. Aksi halde yaptığımız değişiklik Visual Studio' da gözükmez. Bu değişiklikleri Visual Studio' ya bildirmek için ilgili tabloya sağ tıklayıp 'Update Model From Database' seçeneğine tıklıyoruz. 'Refresh' kısmına bastıktan sonra güncelleme olan tabloyu seçip 'Finish' butonuna basıyoruz. Artık tablomuz güncel.

Figür 9: Tabloları Güncelleme

   Bütün bu işlemleri yaptıktan sonra Data Model oluşturmayı tamamlamış olduk. Bir sonraki haftada yapılacak olan Ekleme, Silme, Güncelleme işlemleri için hazırız. Bu haftaki yazımı burada tamamlıyorum. Gelecek yazımda görüşmek üzere...

16 Mart 2014 Pazar

Entity Framework'e Giriş

   Merhaba arkadaşlar,

   Birlikte geçireceğimiz 10 haftalık süreçte sizlere Entity Framework yani Varlık Yapıları hakkında bilgi vermeye çalışacağım. Bu süreç boyunca, Entity Framework'ün temel seviyesinden başlayarak ileri düzey seviyedeki konuları inceleyecek, bilgi kütüphanemizi genişletmek için çaba harcayacağız.

   Bu haftaki yazımda kısaca Entity Framework yapısından, sağladığı kolaylıklardan bahsedeceğim. Entity Framework nedir? sorusunu yanıtlamadan önce ORM (Object Relation Mapping ) nedir? sorusunun cevabını aramakla işe başlayalım.

   ORM, ilişkisel veritabanları yönetim sistemleri (Relational Database Management Systems) ile nesne yönelimli programlama (Object Oriented Programming) arasında bir köprü görevi yapan ve veritabanımızda bulunan veriyi yönetmemizi sağlayan bir modelleme tekniğidir. Bu tekniği kullanan araçlara da ORM araçları adı verilir.

   ORM nedir? sorusunun cevapladıktan sonra Entity Framework yapısını açıklayabiliriz. Entity Framework .NET platformunu için geliştirilmiş bir ORM aracıdır. İlk kez .NET 3.5 ve Visual Studio 2008 ile birlikte 2008'in Ağustos ayında piyasaya çıkmıştır. ORM'nin açıklamasından da anlaşılacağı gibi Entity Framework veritabanımızdaki tabloları nesnelere çevirerek uzun ve anlaşılması zor SQL kodları yazmak yerine oluşturulan bu nesneler üzerinden işlemleri yapmamızı sağlar.

   Entity Framework'ün sağladığı kolaylılardan kısaca bahsedecek olursak;

  • Database performansını artırır. EDM (gelecek haftalarda bahsedeceğim.) databasedeki değişiklere bağlı olarak güncellenir. Bu sayede program sürekli databasedeki tablolara ulaşmak yerine EDM üzerinden işlemleri yapacak, bu sayede daha hızlı işlemler gerçekleştirebileceğiz.
  • Entity Framework CRUD (Create, Read, Update, Delete ) işlemlerini gerçekleştirebilir. Bu sayede uzun ve zahmet gerektiren SQL kodları yazmaktan kurtulabiliriz.
  • Entity Framework  Microsoft SQL Sever başta olmak üzere Oracle ürünü olan MySQL de kullanabilir. Fakat işlemlerimizi LinQ (ilerki haftalarda bahsedeceğim bir başka konu.) teknolojisi kullanarak yapacaksak MS SQL Server kullanmak zorundayız.
  • Database'in sıkıntılı konularından olan "1 to 1", "many to many", "many to 1" ilişkileri kolaylıkla yönetmemizi sağlar.
  • İlişkiler(relationships) ile entityler arasında kalıtım(inheritance) yapma imkanı sağlar.
 
   Entity Framework konusunda ilerleyen haftalarda neler bahsedeceğiz şimdi onları görelim.

  1. Entity Framework Projesi ve Data Model Oluşturma
  2. Ekleme, Silme, Güncelleme (Add, Delete, Update) İşlemleri
  3. LinQ nedir?
  4. LinQ ile Veritabanı İşlemleri
  5. Lazy Loading
  6. Entity Framework Kalıtım (Inheritance)
  7. Entity Framework ile Stored Procedure
  8. POCO (Plain and Old CLR Object)
  9. Bugüne Kadar Geçen Süreç Değerlendirmesi ve Sonuç
   Bir sonraki yazımda görüşmek üzere...

   Referanslar