21 Haziran 2012 Perşembe

Entity Framework Insert-Update-Delete-Select(CRUD işlemi)

Merhabalar bu yazımda Entity Frame work kullanarak CRUD işlemleri yapacağım için oldukça heycanlıyım.SQL sorgularına sinir olan birisi için büyük bir zevk olduğunu tahmin edebilirsiniz.
INSERT İŞLEMİ
CRMEntities mgz = new CRMEntities();
//Önce yeni bir  Entity Data model oluşturup aşağıdaki kodları ancak böyle uygulayabilirsiniz.
//tabiki nesnelerin benzer olaası VS2010 kullanılması gibi ayrıntıları geçiyorum
Urunler urn = new Urunler(); // yeni bir instance oluşturuyorum
//nesnemi dolduruyorum
 urn.UrunAdi = txtUrunAdi.Text.Trim();
 urn.Kategori = txtUrunKategorisi.Text.Trim();

urn.Adet = Convert.ToInt32(txtUrunAdet.Trim());
 //nesnemi ekliyorum
mgz.AddToUrunler(urn);
//değişiklikleri uyguluyorum
mgz.SaveChanges();

 UPDATE İŞLEMİ
var magaza = new CRMEntities(); //CRMEntities mgz = new CRMEntities(); demekten bir farkı yok
Urunler urn = (from c in magaza.Urunler where c.ID == 1 select c).First();
//update çekeceğimiz sorgumuzu çekiyoruz "select * from Urunler where ID=1"  gibi bir sorgu sadece LİNQ ile...
 //nesnemi değiştiriyorum
urn.Kategori = txtUrnKategorisi.Text.Trim();
urn.UrunAdi = txtUrunAdi.Text.Trim(); 
urn.Adet = Convert.ToInt32(txtUrunAdet.Text.Trim()); 
 //değişiklikleri uyguluyorum
magaza.SaveChanges(); 

 DELETE İŞLEMİ
 CRMEntities mgz = new CRMEntities();
 Urunler urn = (from c in mgz.Urunler where c.ID == 1 select c).First();
 mgz.DeleteObject(urn);
 mgz.SaveChanges();

SELECT İŞLEMİ
CRMEntities mgz=new CRMEntities();
//bir tablonun tümünü seçmek
var sorgu=from c in mgz.Urunler select c;
//Kategorisi belli bir veriyi sorgulayarak seçmek
var sorgu2=from d in mgz.Urunler where d.Kategori==("Elektronik") select d;
//bir tablonun sadece iki sutunu seçmek
var sorgu3 = from e in mgz.Urunler select new { e.Kategori, e.UrunAd };


13 Haziran 2012 Çarşamba

C# Using Kullanımı

Kod yazarken .Net en önemli güzelliklerinden biride Çöp toplayıcılarının(garbage Collection) olması yani .net işi biten nesneyi sizin dispose edip öldürmenize bakmadan doğrudan öldürerek müthiş bir performans kazandıra biliyor fakat veritabanı nesneleri oluşturulduktan sonra bağlantı hala devam ettiği için (connection Open durumu) bağlantı bir try-catch-finally blogları içinde dispose edilmesi unutulduğundan genelde bellek canlı bir şekilde kalır ve programımızın içine etmeye başlar
try-catch-finally bloğunu kullanmakta son derece sinir bozucu olup bir sürü offflayarak kod yazmanıza neden olur .Örneğin
    SqlConnection cn = null;
     SqlCommand cm = null;
     try
     {
         cn = new SqlConnection(connectionString);
         cm = new SqlCommand(commandString, cn);
         cn.Open();
         cm.ExecuteNonQuery();
     }
    finally
    {
        if (null != cm)
            cm.Dispose();
        if (null != cn)
            cn.Dispose();
    }

 Aynı kodu using kullaarak pek âla yapabilirdik.
        using (SqlConnection cn = new SqlConnection(connectionString))
     {

         using (SqlCommand cm = new SqlCommand(commandString, cn))
         {
             cn.Open();
             cm.ExecuteNonQuery();
         }
     }

Böylece Using kodu bizim otomatik olarak nesnelerimizin yok edilmesini sağlayarak Garbage Collectionı tetikleyebiliyor.