Veritabanı İşlemleri

Veritabanı İşlemleri

Entity framework yapısında temel 4 konu bulunmaktadır. Tabloların sınıf örneği çıkartılarak kayıt ekleme, kayıt getirme ve diğer işlemler yer almaktadır.

 

Veri Ekleme İşlemi

Entity mimarisi ile aynı mantıkta çalışan InsertData(); bir obje parametresi alır. Set edilmeyecek string, int veya null olabilecek alanlar public olabilir fakat tarih ve özel, primary key gibi alanlar sınıfta private olarak ayarlanmalıdır.

Model Hazırlama (Model/Haberler.cs)

public class Haberler
{
[Column("Identity")] //2.1 sürümünden sonra gelen özellik
 public int pkID { get; set; }
 public string Baslik { get; set; }
 public string Icerik { get; set; }
 public int Yazar { get; set; }
 public String AnahtarKelimeler { get; set; }
 public DateTime Tarih { get; set; }
}

Web servis kullanılarak kayıt ekleme işlemi:

[WebMethod]
public string HaberEkle(string baslik, string icerik, string anahtarkelimeler, int yazar, DateTime tarih)
{
 Model.Haberler haber = new Model.Haberler();
 haber.Baslik = baslik;
 haber.Icerik = icerik;
 haber.AnahtarKelimeler = anahtarkelimeler;
 haber.Yazar = yazar;
 haber.Tarih = tarih;
 Result r = WebFramework.InsertData(haber);
 return r.Message;
}

Bu metod çalıştığı zaman Result sınıfı olarak geri döndürür. Eğer herhangi bir SQL hatası veya veri tipi uyuşmazlığı olursa direk hatayı geri döndürerek görebilirsiniz. Başarılı durumda Result nesnesinin Message propertisinde "OK" döndürür.

Son ID'yi Alarak (Identity) Veri Ekleme İşlemi

Entity mimarisi ile aynı mantıkta çalışan InsertDataIdentity(); bir obje parametresi alır. Set edilmeyecek string, int veya null olabilecek alanlar public olabilir fakat tarih ve özel, primary key gibi alanlar sınıfta private olarak ayarlanmalıdır.

Model Hazırlama (Model/Haberler.cs)

public class Haberler
{
[Column("Identity")] //2.1 sürümünden sonra gelen özellik
 public int pkID { get; set; }
 public string Baslik { get; set; }
 public string Icerik { get; set; }
 public int Yazar { get; set; }
 public String AnahtarKelimeler { get; set; }
 public DateTime Tarih { get; set; }
}

Web servis kullanılarak kayıt ekleme işlemi:

[WebMethod]
public string HaberEkle(string baslik, string icerik, string anahtarkelimeler, int yazar, DateTime tarih)
{
 Model.Haberler haber = new Model.Haberler();
 haber.Baslik = baslik;
 haber.Icerik = icerik;
 haber.AnahtarKelimeler = anahtarkelimeler;
 haber.Yazar = yazar;
 haber.Tarih = tarih;
 return WebFramework.InsertDataIdentity(haber).ID.ToString();
}

Bu metod çalıştığı zaman Result sınıfı döndürür ID propertisinin içinde eklenen kaydın IDsi bulunur. Eğer herhangi bir SQL hatası veya veri tipi uyuşmazlığı olursa direk hatayı geri döndürerek görebilirsiniz.

Update, Delete İşlemleri

ExecuteNonQuery(); bir sql ifadesi alır. Burada bazı özel sql kodları çalıştırılabilir örneğin: UPDATE ve DELETE işlemlerinizi tek satır ile halladebilirsiniz.

Web servis kullanarak update veya delete işlemi:

[WebMethod]
public String HaberGuncelle(int pkID, string Baslik)
{
 String sql = "UPDATE Haberler SET Baslik= @Baslik WHERE pkID= @pkID";
 Result r = WebFramework.ExecuteNonQuery(sql, "Yeni Başlık", 6);
 return r.Message;
}
[WebMethod]
public String HaberSil(int pkID)
{
 String sql = "DELETE FROM Haberler WHERE pkID= @pkID";
 Result r = WebFramework.ExecuteNonQuery(sql, 6);
 return r.Message;
}

Veri Getirme

Entity mimarisi ile aynı mantıkta çalışan GetData<>(); ve GetSingleData<>(); model ve string tipinde bir SQL parametresi alır.

Model Hazırlama (Model/Haberler.cs)

public class Haberler
{
[Column("Identity")] //2.1 sürümünden sonra gelen özellik
 public int pkID { get; set; }
 public string Baslik { get; set; }
 public string Icerik { get; set; }
 public int Yazar { get; set; }
 public String AnahtarKelimeler { get; set; }
 public DateTime Tarih { get; set; }
}

Kullanım metodu bir listeye atılarak kullanılır: List<T> değişken = WebFramework.GetData<T>("SQL", param1, param2...);

Farklı şekillerde kullanım metodları:

 <div>
  <h1>Yeni Haberler</h1>
   <%
   List<WebSitem.Model.Haberler> haberler = SYuksel.WebFramework.GetData<WebSitem.Model.Haberler>("SELECT * FROM Haberler ORDER BY pkID DESC");
   foreach (var haber in haberler)
   {
   <div class="kutu">
   <%= haber.Baslik %>	
   </div>
 <br />
 <% }  %>
 </div>

aspx Sayfasında foreach döngüsü ile haber değişkenin Baslik propertisini yazdırdık. Eğer tek bir kayıt ile bir sınıf objesi kullanmak istiyorsanız GetSingleData metodunu kullanmanız önerilir.

  WebSitem.Model.Haberler veri = WebFramework.GetSingleData<WebSitem.Model.Haberler>("SELECT * FROM Haberler WHERE pkID= @pkID", 4);
  Response.Write("<h3>" + veri.Baslik + "</h3>");