Entity Framework Kullanımı

Birden çok ORM yani Object Relational Mapping aracı vardır. .NET üstünde resmi frameworklerden biri Entity Framework'tür. Entitfy Framework kısaca EF, nesneye yönelik programlamada kullanılan ve veritabanındaki tablolara karşılık gelen nesneleri oluşturarak işlem yapan alt yapıdır.

Entity Framewor ile veritabanı işlemleri daha hızlı ve daha kolay yapılmasına rağmen büyük projelerde hız konusunda sınıfta kalmaktadır. Hala veritabanında çalışan stored procedure tekniği daha hızlıdır. Tabi ki bu büyük proje dediğim kavramın gerçekten big datalarla çalışıldığı durumları içerdiğinin bilinmesi gerekir.

Şu anda LINQ to Entities teknolojisi ile Entity Framework kullacağız.

Temel kaydet, güncelle, dil ve ara işlemlerini yaparak Entity Framework kullanarak temel işlemlerimizi yapacağız.

 

Öncelikle Solution sekmemize sağ tıklayıp add -> new items sekmesinden ado entity data model seçimini yapıyoruz.

 

 Ardından açılan pencerede eğer varolan bir veritabanından çağrı yapacaksak EF Designer from database sekmesini tıklayarak ilerliyoruz.

 

 

 Açılan pencerede daha önce bir connection yani bağlantı olmadığı için new connection butonunu tıklıyoruz.

 

 

 SQL Server bağlantı bilgilerimizi girdikten sonra veritabanını seçip pencereyi onaylıyoruz.

 

 

 Artık bağlantımız hazır hale gelmiş durumda.

 

 

 

 Gelen pencereden entity framework’ün hangi versiyonunu kullanacağımızı seçiyoruz.

 

 Bu örneğimizde veritabanında olan tek tabloyu seçip modellenmesini istedik.

 

 

 .edmx uzantılı diyagramımızda artık hikaye veritabanındaki hikayeler tablosunu görebiliyoruz.

 

 Bu işlemleri yaptıktan sonra aşağıdaki isim alanları projemize eklendiler. Bundan sonra LINQ to Entities kullanarak temel işlemleri yapabiliriz.

 

EntityFramework

System.ComponentModel.DataAnnotations

System.Data.Entity

System.Runtime.Serialization

System.Security

 

Şimdi bir örnek uygulama yapalım. Kullanıcı arayüzümüz aşağıdaki gibidir;

 

Veri eklemek için buton click olayına aşağıdaki kodu yazalım;

        privatevoid button2_Click(object sender, EventArgs e)

        {

            using (EFhikayeDBEntities efh = newEFhikayeDBEntities())

            {

                hikayeler hky = newhikayeler();

                hky.tip = textBox1.Text;

                hky.hikaye = textBox2.Text;

                efh.hky.Add(hky);

                efh.SaveChanges();

            }

            textBox1.Text = "";

            textBox2.Text = "";

        }

 

Kayıt silmek için buton click olayımıza aşağıdaki kodu yazabiliriz;

        privatevoid button3_Click(object sender, EventArgs e)

        {

            int id = Convert.ToInt32(dataGridView1.CurrentRow.Cells["ID"].Value);

 

            using (EFhikayeDBEntities efh = newEFhikayeDBEntities())

            {

                var liste = from h in efh.hky

                            where h.ID == id

                            select h;

 

                liste.ToList().ForEach(x => efh.hky.Remove(x));

                efh.SaveChanges();

            }

        }

    }

 

Verileri listelemek içinde click olayımıza aşağıda kodu yazalım;

privatevoid button1_Click(object sender, EventArgs e)

{

    

            using (EFhikayeDBEntities ehd = newEFhikayeDBEntities())

            {

                var liste = from h in ehd.hky

                            orderby h.ID ascending

                            selectnew

                            {

                                Id=h.ID,

                                tip = h.tip,

                                hikaye = h.hikaye

                            };

               dataGridView1.DataSource = liste.ToList();

            }

       

}

 

Container sınıfımızda aşağıdaki gibidir;

publicpartialclassEFhikayeDBEntities : DbContext

{

        public EFhikayeDBEntities()

            : base("name=EFhikayeDBEntities")

        {

        }

 

        protectedoverridevoid OnModelCreating(DbModelBuilder modelBuilder)

        {

            thrownewUnintentionalCodeFirstException();

        }

 

        publicDbSet<hikayeler> hky { get; set; }

 

}

Yorum ekle