EF örneklemesi için Adres Defteri

Windows Forms  Şubat 14, 2015

Bu yazımda Entity Framework’ün Windows Desktop uygulamasında kullanılmasına örnek olması için bir adres defteri uygulaması geliştireceğim. Bu uygulamada ki amaç hızlı ve pratik bir uygulamanın EF ile nasıl yapılacağını tanımaktır. Bu projede sıradan bir veritabanı ile en az bir kere Windows Forms uygulaması geliştirdiğinizi kabul ederek ilerleyeceğim.

İlk olarak bir Windows Forms uygulaması oluşturmalıyız.

2015-02-14 08_05_29-Start Page - Microsoft Visual StudioResimde de görüleceği gibi New Project -> Visual C# -> Windows Desktop seçeneklerini seçerek Windows Forms Application seçiyorum. Bu aşamada altta uygulama için bir isim istenilmekte. Bu alana AdresDefteri gireceğim.

Bu aşamadan sonra projeme bir veritabanı ekleyeceğim için klasör ekliyorum.

2015-02-14 08_16_22-AdresDefteri - Microsoft Visual Studio

Data klasörü bizim veritabanımızı taşıyacak olan klasör. Buraya bir veritabanı ekleyerek projemize ait bir veritabanı oluşturuyoruz. Ancak şunu belirtmem gerekir ki eğer bir veritabanı üzerine proje oluşturacaksanız yani var olan bir veritabanı üzerine o durumda bu yöntem hatalı bir yaklaşım olacaktır.

Şimdi bu klasöre bir veri tabanı eklemek için klasöre sağ tıklayıp Add -> New Item seçeneğini seçmeliyiz.

2015-02-14 08_21_09-AdresDefteri - Microsoft Visual Studio

Yukarıda ki gibi Service-based Database seçeneğini seçerek projemize bir veritabanı dosyası eklemiş oluyoruz. Bu aşamada oluşturduğumuz veritabanı üzerine sağ tıklayarak Open seçeneğini seçiyoruz. Bu işlem sonucunda Server Explorer paneli açılacaktır. Oluşturduğumuz veritabanının birimleri burada görülmekte. Bize kayıtları saklayacağımız tablolar gerekmekte.

2015-02-14 08_28_30-AdresDefteri - Microsoft Visual Studio

Burada görüldüğü gibi tables klasörü bulunmakta ve bu klasör bizim tablolarımızı taşıyan klasörümüz. Daha önce bir veritabanı üzerinde çalıştığınızı var sayarak veritabanı detaylarına girmiyorum. Buradan bir tablo oluşturarak yolumuza devam edelim. Bunun için Tables klasörüne sağ tıklayarak Add New Table seçeneğini seçiyoruz.

2015-02-14 08_33_47-AdresDefteri - Microsoft Visual Studio

Yukarıda ki gibi alanları girerek tablomuzu tanımlıyoruz. Ancak benim ekranda Identity sütunu ilk başta gelmedi, sizde de gelmeme ihtimali yüksek o yüzden sütun başlıklarına sağ tıklayarak Identity işaretliyoruz. Burada unutulmaması gereken tablo adının ayarlanması ki yukarıda ki resimde altta bulunan scriptte [Table] yazan yere bizim istediğimiz tablo adını yazmamız gerek. Buraya telefonlar yazalım. Şimdi ekranın sol üst köşesinde bulunan Update butonuna tıklıyoruz. Bu bize bir ekran açıyor ve bir ön görünüm sunuyor. Boş verin ve Update Database seçeneği ile güncellemeyi tamamlayın. Altta ki SQL yerine birşeyler yazdı ve en altta update completed successfully yazıyorsa devam.

2015-02-14 08_41_33-AdresDefteri - Microsoft Visual Studio

Artık Server Explorer da ki Tables klasörüne sağ tıklayıp Refresh dediğimizde telefonlar tablomuz görünecektir. Artık projemizde veritabanımız ve bu veritabanına bağlı olarak tablomuzda bulunuyor. Yani EF ile projeyi yürütmeye başlayabiliriz.

EntityFramework’ün son sürümünün referanslarımızda olduğuna kanaat getirmek için Project -> Manage NuGet Packages seçeneğini seçip NuGet çalıştırıyoruz. Karşımıza çıkan ekranda EntityFramework bulup Install tıklıyoruz.

2015-02-14 08_47_22-AdresDefteri - Manage NuGet PackagesEF yüklemek için I Accept şeklinde onaylayıp ilerliyoruz. Yükleme tamamlanınca yukarıda ki ekranın sağ alt köşesindeki Close ile çıkıyoruz. Solution Explorere gelip bir klasör oluşturalım. Klasör adları Namespace ile eşleştiği için verdiğiniz ismi unutmayın. DAL adında bir klasör açıyorum ana dizine ve üzerine sağ tıklayarak Add -> New Item seçeneği ile bileşen ekleme ekranına geliyorum.

2015-02-14 08_52_19-Add New Item - AdresDefteri

ADO.Net Entity Data Model seçip adına AdresData diyerek ekliyorum. Gelen ekrandan EF Designer from database ile oluşturduğum database kullanmaya çalışacağım. Next ile ilerlediğimde oluşturduğum data dosyasını direk görüyor, bir değişiklik yapmadan tekrar ilerliyorum. Bu ekranda EF tarafından hangi bileşenlerin EF tarafından ilişkilendirileceğini seçeceğim bir ekran geliyor.

2015-02-14 08_55_29-Entity Data Model Wizard

Gördüğünüz gibi tablolar altında bulunan telefonlar tablosunu seçiyorum. Eğer daha karışık bir projede EF kullanacaksanız ihtiyacınız olan table view sp gibi bileşenleri seçerek onlar üzerinde çalışabilirsiniz. Finish diyerek işlemi sonlandırıyorum. Karşıma bir diyagram ekranı geliyor. Bu bizim telefonlar tablosunun EF modelini taşıyor ki tablomuzu buradan görerek işleme devam edelim diye. Bu ekranı kapatıyoruz ve Solution Explorerdan DAL klasörüne bakıyoruz.

2015-02-14 08_58_43-AdresDefteri - Microsoft Visual Studio

Resimde de görüleceği gibi cs uzantılı bir kaç dosya eklenmiş. tt uzantılılar bizi ilgilendirmiyor açıkcası. AdresData.Context.cs dosyası bizim Context yani veri işleme işlemlerini yürüten dosya.

Altta bulunan AdresData.cs şu an için boş bizde bir şey yazmayacağız. telefonlar.cs dosyası ise tablomuzun alanlarının bulunduğu dosya oluyor. Evet bu aşamadan sonra artık veri okuma yazma işlemlerine başlayabiliriz.

Form sayfamıza bir Grid ekleyerek işe başlayalım. Toolbox -> Data -> DataGridView seçenekleri ile grid view bileşenini sayfamıza sürükleyerek bırakıyoruz. Proje Veri Kaynağı yöntemi üzerinden gitmeyeceğimiz için gridi herhangi bir yere bağlamıyoruz. Sayfanın boş kısmına çift tıklayarak load eventindeki koda erişelim.

Burada kayıtları okumak için Linq dan faydalanacağız.

DAL.DatalarEntities context = new DAL.DatalarEntities();
var enuTelefonlar = from t in context.telefonlar
select t;
this.dataGridView1.DataSource = enuTelefonlar.ToList();

Yukarıda ki kod bizim için gride kayıtları getirecektir. Bu aşamada kayıtlar ekrana dökülecek ancak tabloda kayıt olmadığı için gösterilecek bir şey yok.

2015-02-14 09_44_57-Form1

Gördüğünüz gibi tablo ekrana listelenmiş bulundu. Şimdi kayıt girme için bir form oluşturalım ve kayıt girelim. Projemize bir form ekliyoruz ve aşağıdakine benziyor.

2015-02-14 09_49_54-AdresDefteri - Microsoft Visual Studio

İşleme kaydet butonu ile devam edeceğiz. Burada kaydet butonu girdiğimiz dataları EF üzerinden tablomuza kaydedecek.

DAL.telefonlar tlf = new DAL.telefonlar();
tlf.AdiSoyadi = this.txtAdiSoyadi.Text;
tlf.Telefon = this.txtTelefon.Text;
tlf.GSM = this.txtGSM.Text;
DAL.DatalarEntities de = new DAL.DatalarEntities();
de.telefonlar.Add(tlf);
de.SaveChanges();
this.Close();

Yukarıda ki kodda ilk önce bir telefon oluşturduk ve içerisine ilgili kayıtları girdik. Sonra EF contextimize gidip telefonlar dbset imize add ile ekledik. SaveChanges yaparak kaydı kaydettik. Artık ekranı kapatıp listeye dönebiliriz. Şimdi form1 e bir buton ekleyerek yeni kayıt girmek için form2 yi açtırabiliriz. Butonun click olayına şunları ekliyoruz.

Form2 frm2 = new Form2();
frm2.ShowDialog();
Form1_Load(sender, e);

Bu şu demek oluyor yeni kaydı ekleme ekranını aç, kapanmasını bekle ve kapanınca Form1 yüklemesinde ki kayıtları ekrana getirme kodunu yeniden çalıştır. Projemizi test edebiliriz.

2015-02-14 09_57_53-Form1Evet artık kayıt eklemiş olduk. Eğer EF konusunda bilginiz var ise (yok ise EF üzerine yazılarımdan faydalanabilirsiniz) silme ve güncelleme işlemleri bu aşamadan sonra standart mantıkla ilerlemektedir.

Projeyi indirmek ve incelemek için https://github.com/halityurttas/EF-Sample-for-Winform-AdresDefteri adresinden faydalanabilirsiniz. Daha sonraki bir yazımda EF ile Project Data Source yöntemini anlatacağım.

Esenlikle kalın…

Bu yazı 2203 defa görüntülendi

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yazar Hakkında

15 yıllık çalışma hayatında birçok proje geliştirmiş binlerce projeyi inceleme fırsatı bulmuş yazılım aşığıdır. İşini hobi olarak gören yazarımız iş hayatını profesyonelce zevkle sürdürmektedir.

Son Eklenenler