LINQ to Entities ile temel veritabanı işlemleri

Projeye Entity Framework (EF) kurulumunu ve çalışma mantığını önceki yazıda anlatmış bu yazıda EF ile temel veritabanı işlemlerinden Ekle, Sil, Değiştir, Ara ve Listele işlemlerini anlatacağımdan bahsetmiştim. Şimdi programlamayı benim için zevkli hale getiren LINQ to Entities ile örneğimize başlıyoruz. Projemizde kullanacağımız örnek kodlar hem Web Projelerde hem Windows Formlarda çalıştığı için (bu bizim için büyük bir nimet) Windows Formlarda çalışmayı tercih ederek bir Windows Forms Application proje başlatıyoruz.  Bir önceki yazıda EF modelin nasıl oluşturulacağını anlatılmıştı. Öncelikle o yazıyı incelemenizi tavsiye ederim. Projemizde kullandığımız modelin Entity Container adı EFOrnekDBEntities. Üzerinde çalışacağımız projede 5 Button, 3 TextBox ve DataGiridView bulunacaktır. Aşağıdaki gibi isimlendirdim.  

  • Button: btnListele
  • Button: btnSil
  • Button: btnAra
  • Button: btnKaydet
  • Button: btnGuncelle
  • TextBox: txtAra
  • TextBox: txtKategori
  • TextBox: txtKategoriGuncelle
  • DataGiridView: dgvKategoriler

 

Örnek olarak kullanacağımız veritabanı yapısı aşağıdaki gibidir.

public partial class Kategoriler
{
  public int Id { get; set; }
  public string Kategori { get; set; }
}

Kategoriler isimli tabloda Id ve Kategori adlı iki alan mevcut. Örnek olarak bu iki alanın yeterli olacağını düşünüyorum. Her kayıt işlemi, güncelleme ve silme işleminden sonra değişikliklerin gösterilmesi için VerileriListele isimli metot yazarak listeleme yapmak istediğimde bu metodu çalıştıracağım. Listeleme Metodu :

private void VerileriListele()
{
   using (EFOrnekDBEntities oe = new EFOrnekDBEntities())
   {
      var liste = from k in oe.Kategorilers orderby k.Kategori ascending
      select new
      {
         Id = k.Id,
         Kategori = k.Kategori
      };
      dgvKategoriler.DataSource = liste.ToList();
   }
}

Listeleme butonunun click olayına VerileriListele() metodunu yazarak dgvKategoriler isimli DataGiridView nesnemizde kayıtları listeliyoruz. Kayıt Ekleme İşlemi : txtKategori nesnemizle alacağımız veriyi veritabanına ekliyoruz.

using (EFOrnekDBEntities oe = new EFOrnekDBEntities())
{
   Kategoriler kat = new Kategoriler(); //Nesnemizi oluşturduk.
   kat.Kategori = txtKategori.Text; //Değeri kategoriye tanımladık.
   //kat.Id = 5;
   oe.Kategorilers.Add(kat); //Değeri kategori tablosuna ekledik
   oe.SaveChanges(); //Değişiklikleri kaydettik
}
VerileriListele();

  Kayıt Güncelleme İşlemi : txtKategoriGuncelle nesnemizin Text değerini DataGiridView'in CellContentClick olayı ile dolduruyoruz. Bunun için DataGiridView'in CellContentClick olayına

txtKategoriGuncele.Text = dgvKategoriler.CurrentRow.Cells["Kategori"].Value.ToString();

yazıyoruz. DataGiridView'in Kategori sütunundaki seçili değeri txtKategoriGuncele nesnesine alıyoruz. btnGuncelle nesnesinin click olayına ise aşağıdaki kodları ekleyerek güncelleme işlemini yapıyoruz.

int id = Convert.ToInt32(dgvKategoriler.CurrentRow.Cells["Id"].Value); //DataGridViewdeki seçili satırın id numarası
using (EFOrnekDBEntities oe = new EFOrnekDBEntities())
{
   var kat = oe.Kategorilers.FirstOrDefault(x => x.Id == id); //Lambda ifadesini kullanarak id numarası şeçili kaydı aldık
   kat.Kategori = txtKategoriGuncele.Text;  //Değeri kategoriye tanımladık
   oe.SaveChanges(); //Değişiklikleri kaydettik
}
VerileriListele();

Kayıt Silme İşlemi : Güncelleme işleminde olduğu gibi burada da DataGridView'deki seçili satırın id numarasını alıp silme işlemini gerçekleştiriyoruz.

int id = Convert.ToInt32(dgvKategoriler.CurrentRow.Cells["Id"].Value); //DataGridViewdeki seçili satırın id numarası
using (EFOrnekDBEntities oe = new EFOrnekDBEntities())
{
   var liste = from k in oe.Kategorilers
   where k.Id == id
   select k;
   liste.ToList().ForEach(x => oe.Kategorilers.Remove(x)); //Lambda ifadesini kullanarak id numarası sildik
   oe.SaveChanges(); //Değişiklikleri kaydettik
}
VerileriListele();

Kayıt Arama İşlemi : Kayıt arama işlemi için ise txtAra nesnesinden gelen bilgiye göre Contains metodunu kullanarak arama yapacağız.

string ara = txtAra.Text;
using (EFOrnekDBEntities oe = new EFOrnekDBEntities())
{
   var liste = from k in oe.Kategorilers where k.Kategori.Contains(ara) orderby k.Kategori ascending
   select new
   {
      Id = k.Id,
      Kategori = k.Kategori
   };
   dgvKategoriler.DataSource = liste.ToList();
}

Eğer bir using bağ içerisinde birden fazla (kaydet,sil,güncelle) işlemi yapıyorsanız oe.SaveChanges(); metodunun son işlemde yazılması yeterli olacaktır. LINQ to Entities ile temel veritabanı işlemleri bu şekildedir. Örnek projeyi indirmek için tıklayınız. Kolay gelsin...

İni Dosyası Nedir? C# ile İni Dosyalarına Yazma ve Okuma Önceki Yazı

İni Dosyası Nedir? C# ile İni Dosyalarına Yazma ve Okuma

GoDaddy'de Plesk Panel Üzerinde Ücretsiz SSL Sertifikası Kurulumu Nasıl Yapılır? Sonraki Yazı

GoDaddy'de Plesk Panel Üzerinde Ücretsiz SSL Sertifikası Kurulumu Nasıl Yapılır?

Yorum/Soru Yazın