22/11/2015 12

C# ile Linq To Sql Kullanımı

Herkese merhaba Bu yazıda sizlere C# dili ile Linq To Sql nasıl kullanılır onu anlatacağım. Bu yazıdan sonra sizlerde Linq To Sql kodlarını kolayca kullanabileceksiniz.

İlk olarak Linq Nedir Bundan bahsetmek isterim.

Linq açılımı : Language Integrated Query demektir. Yani Dil ile bütünleşmiş dil anlamına gelmetedir.

Peki dil ile bütünleşmek ne demektir. Birazda bundan bahsedeyim. Normalde sql sorgularını yazarken unicode şeklinde yazıyoruz. Yani aşağıdaki gibi yazıyoruz.


SqlDataAdapter arama = new SqlDataAdapter("select * from ogrenciler where TC like'%" + txtTCara.Text + "%' and ad like '%" + txtAdAra.Text + "%' and soyad like '%" + txtSoyadAra.Text + "%'", bag);
                DataTable dt = new DataTable();
                arama.Fill(dt);
                dt.Dispose();

Yukarıdaki yazdığım basit bir Sql arama sorgusudur. Gördüğünüz gibi bütün sql sorguları tırnak işaretleri arasına yazılı durumda. Linq ise bu şekilde değilde direk olarak C# veya vb.net kodu şeklinde yazılır.

Aşağıdada örnek bir linq kodu bulunmaktadır.

using (DataClassFileDataContext linq = new DataClassFileDataContext())
            {
                int say = (from p in linq.users select p).Count();
                var sorgu = (from p in linq.users
                             where p.isim.Contains(txtad.Text)
                             select new
                             {
                                 p.id,
                                 fullname = p.ad+ " " + p.soyad,
                                 p.mail,
                                 p.durum,

                             }).ToList();
                listbox1.DataSource = sorgu;
                listbox1.DataBind();
            }
Yukarıdaki kodlar da arama kodlarıdır. Linq to Sql ile kodlarımızı C# dili ile yazıyoruz Normal Sql de ise C# içinde Unicode olarak yazıyoruz.

Peki niçin Linq To Sql:

Linq To Sql ile sorgular Normal Sqlden çok daha hızlı çalışmaktadır. Yani Linq To sql ile oluşan hataları en aza indirgemek amacıyla kodları nesneler gibi yazarız. Nasıl ki C# ile kod yazarken Editör yazdıklarımızı tamamlar Linq to Sql ilede biz öyle kod yazarız.

Böylece daha kısa ve basit kodlarla daha hızlı bir şekilde verilere ulaşırız. Bunun yanında kodlardaki mantık hatalarını bulup çözmemiz daha kolay olur. Öteki türlü sorunu bulabilmek için noktalama işaretlerine kadar bütün Sql kodlarını incelememiz gerekmektedir. İşte sadece bu özelliği için bile Linq To Sql ile kod yazılır bence.

Neyse peki linq to sql ile temel Sql sorguları nasıl yapılıyor şimdi bunları sıra ile göreceğiz.

Linq To Sql ile Insert Sorgusu :

Şimdi aşağıda sorgu adını vereceğim ve kodları açıklayacağım


using (DataClassFileDataContext linq = new DataClassFileDataContext())
        {
            users user = new users();
            {
                user.ad= txtadi.Text;
                user.soyad= txtsoyadi.Text;
                user.mail= txtmail.Text;
                user.durum= txtdurum.Text;
            }
            linq.users.InsertOnSubmit(user);
            linq.SubmitChanges();
        }
Burada ilk baştaki deyim olan aşağıdaki deyim ile

using (DataClassFileDataContext linq = new DataClassFileDataContext())
kullanacağımız Linq To Sql Class'ını seçiyoruz. Yani işlemlerimizi onun altından devam ettireceğiz.

Daha sonra ise:


users user = new users();
            {
                user.ad= txtadi.Text;
                user.soyad= txtsoyadi.Text;
                user.mail= txtmail.Text;
                user.durum= txtdurum.Text;
            }
Bu deyim ile tablomuza bir değişken atıyoruz ve tablomuzun hangi kolonuna hangi veriyi ekleyeceğimizi belirliyoruz. Ve en sonunda ise aşağıdaki sorgu ilede ekleme işlemini tamamlıyoruz

 linq.users.InsertOnSubmit(user);
            linq.SubmitChanges();
Artık Ekleme işlemini yaptık. Şimdi veri seçme işlemine bakalım...

Linq To Sql ile Veri Seçme İşlemi:

Aşağıdaki sorgu ile Linq To Sql ile veritabanından veri seçebiliyoruz. Önce sorguyu yazıp sonra kodları anlatacağım.

using (DataClassFileDataContext linq = new DataClassFileDataContext())
            {
                var sorgu = (from p in linq.users
                             where p.ad.Contains(txtad.text)
                             select new
                             {
                                 p.id,
                                 ad_soyad= p.ad+ " " + p.soyad,
                                 p.mail,
                                 p.durum

                             }).ToList();
                DataGridView1.DataSource = sorgu;
                DataGridView1.DataBind();

            }
Şimdi bu kodların açıklamasına geçelim arkadaşlar...

İlk baştaki komutu anlatmayacağım tekrardan yukarıda belirtmiştim zaten  şimdi burada sorgu kısmını anlatacağım önemli olan yer burası çünkü


var sorgu = (from p in linq.users
                             where p.ad.Contains(txtad.text)
                             select new
                             {
                                 p.id,
                                 ad_soyad= p.ad+ " " + p.soyad,
                                 p.mail,
                                 p.durum

                             }).ToList();
Burada sorgu değişkenini var türünde oluşturmamozon sebebi gelecek olan sonuc normal değişken türü olmadığı içindir. Var değişkeni her türlü değişkeni kabul eder. daha sonra sorguda ise

from p in linq.users where p.ad.Contains(txtad.text)
kısmında ad kolonundaki verilerin txtad.text değerini içereni getir dedik. Yani Sqldeki Like sorgusu gibi. Burdada arama yaptırdık. Daha sonraki

select new
         {
            p.id,
            ad_soyad= p.ad+ " " + p.soyad,
            p.mail,
            p.durum

         }).ToList();
kısmında ise gelen verilerle yeni bir tablo oluştur dedik ve bu tabloda gösterilecek olan kolonları seçtik. En son olarakta ToList() diyerek bunları bir liste yani dizi şeklinde getirdik. Bu sayede datagridview içerisinde gösterebileceğiz. En sondaki

DataGridView1.DataSource = sorgu;
DataGridView1.DataBind();
komutları ile gelen verileri DataGridview nesnesinin içerisine attık ve tablomuzu yeniden yükledik. Linq To Sql ile arama işlemi bu kadar. Sırada silme işlemi var şimdide ona bakalım.

Linq To Sql ile Silme İşlemi : 

Silme işlemi oldukça basit ve kısadır arkadaşlar

var sorgu = (from p in linq.users where p.id.ToString() == lblSilId.Text select p).First();
            linq.users.DeleteOnSubmit(sorgu);
            linq.SubmitChanges();

ilk satırdaki sorgu ile silecek olduğumuz veriyi seçiyoruz.

ikinci satırdaki komutla silme işlemini yapıyoruz

Üçüncü satırdaki komutla da değişiklikleri kaydedip tablomuzu yeniliyoruz.

Şimdide Güncelleme işlemine bakalım...

Ve son olarak Linq To Sql ile Veri Güncelleme İşlemi:


   string id = txtid.text;
        using (DataClassFileDataContext linq = new DataClassFileDataContext())
        {
            var user = (from p in linq.users where p.id.ToString() == id select p).First();
            user.ad= txtadi.Text;
            user.soyad= txtsoyadi.Text;
            user.mail= txtmail.Text;
            user.durum= txtdurum.Text;

            linq.SubmitChanges();
        }
Burda yine ilk satırı anlatmayacağım arkadaşlar.

Akabindeki ilk sorguda veri seçme işlemi yapıyoruz. Silme işleminde olduğu gibi ve onların altındaki alanda ise kolonları eşleme yapıyoruz. Ekleme işleminde olduğu gibi.

En sonunda ise bu değişiklikleri olduğu gibi kaydet dioruz ve tablomuzu güncellemiş oluyoruz.

Aslına bakarsanız güncelleme işlemi ekleme ve silme işleminin karışımıdır. İkisininde özelliklerini kullanır.

Güncelleme işlemide bu kadar arkadaşlar.

Herkese İyi çalışmalar -- Takipte Kalın

Burak Hamdi TUFAN


Tags

Share this Post



Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment.

Comments

    There is no comment. Be the owner of first comment...