28 Aralık 2009 Pazartesi

Yerine Tetikleyiciler - 'Instead Of' Triggers (MS SQL)

Microsoft SQL Server'da Instead of trigger'ların bize sağladığı en önemli avantaj, güncellenemeyen view'lerin güncellenebilir yapılmasıdır. Bu yazıda da güncellenemeyen bir view'e instead of insert trigger yazarak view'e insert yapılmasını sağlayacağız.

İlk olarak tablolarımızı oluşturmamız gerekiyor. Bir önceki yazıda (Linq) kullandığımız tabloları kullanacağız. İster elle oluşturabilirsiniz isterseniz de aşağıdaki sql sorgusunu veritabanınızda çalıştırabilirsiniz. Toplam 3 adet tablomuz bulunmakta, kısaca açıklamak gerekirse, student tablomuzda öğrenci verileri tutulmaktadır.

Bir öğrencinin istediği kadar ders alabilmesi için student_course_join tablomuz bulunmaktadır ve doğal olarak dersleri kayıt ettiğimiz bir de course tablosu bulunmaktadır.

19 Aralık 2009 Cumartesi

Hala Linq Kullanmıyor musunuz?

.Net için ufak bir uygulama geliştirirken, bu uygulamada veritabanı bağlantısını Sql Data Client ile sağlıyordum, dolayısıyla oluşturduğum her yeni dosyada kodlamaya başlamadan önce "using System.Data.SqlClient;" satırını eklemek zorundaydım. Oysa "using System.Linq;" satırı hazır olarak geliyordu. Bende Microsoft'ta çalışanların elbet bir bildiği vardır diye düşündüm ve kodlamayı yarım bırakarak google'a "linq tutorial" yazıp arattım.

Yeni şeyler öğrenmek her zaman insana zor gelir, ancak linq öğrendikten sonra, neden daha önce bakmadım diye kendime sordum. Çünkü her seferinde bağlantı açıp kapamak, sql sorguları yollayıp sonuçları okumak gibi işlemler linq ile çok kolay.

Bu yazıda çok basit bir uygulamayı linq kullanarak nasıl daha basit hale getirilebileceğini göreceksiniz.Bu uygulamada bir tane öğrenci tablomuz, bir tane de ders tablomuz olacak ve her öğrencinin istediği kadar ders seçebilmesi için de bunları bağlayan bir join tablomuz olacak.

İlk olarak tabloları oluşturmak için, "SQL Serve Management Studio Express"i başlatıyoruz. "Deneme" adında bir veritabanı yaratıp,  aşağıdaki tabloları oluşturuyoruz. Tablo isimlerini ingilizce olarak yazıyorum, eğer türkçe oluşturursak kod içerisinde ingilizce-türkçe karışık bir notasyon oluşacaktır.