Osman KURT

Kendime Not

Entity Framework İstenilen Türde Liste Döndürme

Son projelerimde sıkça kullanmakta olduğum entity framework’ de yeni yeni şeyler öğrendim ve bunlardan birini sizler için paylaşmak istedim.
DB’den çektiğimiz bir veriyi liste olarak almak için var bir değişken tanımlıyoruz ve entity cümlemizi yazarak db’den gelen listeyi değişkenimize aktarıyoruz. Daha sonra forech döngüsü ile kullanmak istediğimiz formata getiriyoruz kendi listemize dolduruyoruz.


Örnek Kullanım;

List<Konsol> konsollist = new List<Konsol>();
var Detay = (from a in entity.KonsolLog orderby a.KonsolLogID descending select a).ToList();
foreach (var item in Detay)
{
konsollist.Add(new Konsol { KonsolLogID = item.KonsolLogID, Icerik = item.Icerik });
}
return konsollist;


Şimdi bu olayımızda yapılan 2 ana işlem var. Öncelikte Db’ye bağlanarak çektiğimiz verileri değişkene aktarıyoruz . İkinci olarak çektiğimiz bütün veri sayısı kadar tek tek dolaşarak yeniden listeye ekleme yaptırıyoruz. Buda verinin boyutuna göre hatrısayılır bir zaman alıyor ve kod israfı yaratıyor. Programcılar arasında kod ameleliği. Gelin yeni öğreneceğimiz sistem üzerinde bu kodun daha kolay kullanımı nasıl oluyor hep birlikte görelim.

Örnek kodumuzun kolay kullanımı alt kısımda ki gibi;

var konsollist = (from a in entity.KonsolLog orderby a.KonsolLogID descending select new Konsol { KonsolLogID = a. KonsolLogID, Icerik = a. Icerik }).ToList();
return konsollist;


Görmüş olduğunuz gibi yeni uygulanan kod ile tek seferde işlemi tamamlıyoruz. Emin olun büyük ölçekli projlerde bu konu sizinde canınızı yakabilir.



Görüşmek üzere
Osman KURT
Yazılım Uzmanı

SQL de İki Tabloyu Birbiriyle Merge'leme

Bu yazımda size elinize bulunan 2 tabloyu birbiyle mergeleme (birleştirme) olayından bahsedeceğim. Yalnız aynı olan verileri almamak şartıyla. Örneğin elinizde bir mail listeniz var ve bu mail listenize yeni veriler eklemek istiyorsunuz. Ama var olan listenizde yeni eklenecek olan maillerden var mı bilmek istiyorsunuz ve aynı verileri gereksiz yere saklamak istemiyorsunuz. İşte tamda burada merge olayı devrey giriyor çünkü tek tek kontrol etmeye kalkarsanız ve dolu bir veri listeniz varsa gerçekten bu çile haline gelebilir.

Sql de merge olayı kasıyormu?

Kısa söylemek gerekirse HAYIR. Insert yada update zamanından fazla bir zaman almıyor.

Kullanımı;

İlk olarak ben liste halindeki verilerimi bir adet DataTable'e yazdım. Daha sonra önüne "#" koyarak oluşturduğum temp tabloma DataTablemi kayıt ettiim. Bu arada # işareti koyarak sql'de oluşturduğum temp tablom connection close olduğu anda kendiliğinden kayboluyor haberiniz olsun. Daha sonra merge olayımız devreye giriyor. İstediğimiz koşuluda yazabiliyoruz aynı zamanda.

Benim temp tablomun adı A, asıl kayıt atacağım tablom da MailListesi olsun ve kodumuz alt kısım da mevcut,

 

MERGE MailListesi cm 
USING A ON cm.FirmaID = A.FirmaID and cm.Mail = A.Mail
WHEN NOT MATCHED THEN
       INSERT (FirmaID,Mail)
       VALUES (A.FirmaID,A.Mail);

 

Kısa zaman sonra ufak bir örnek uygulamayıda buaradan paylaşacağım.

Görüşmek üzere

Osman KURT
Yazılım Uzmanı