Bu hafta içerisinde gerçekleşen ve benimde iki oturumda konuşmacı
olarak yer aldığım Netron Techweek her sene olduğu gibi sektördeki
önemli gelişmeleri takip edebilmek adına herkes için güzel bir etkinlik
oldu. Özellikle ASP.NET MVC Framework oturumumda, hala gelişme
aşamasında olan ve henüz tam bir ürün kimliğine bürünmemiş bir yapının
bile katılanların ciddi anlamda ilgisini çekmesi ve olumlu tepkiler
alması, ilerleyen günlerde MVC uygulamalarındaki artacak eğilimin bir
işaretiydi. LINQ'in büyüleyici ortamının özellikle bu ortamı yeni
tanıyanlarda bıraktığı izlenimler hakkında yorum dahi yapmama gerek
yoktur diye düşünüyorum :)
Aşağıdaki linklerde gerçekleştirdiğim sunumları ve örnek kod dosyalarını bulabilirsiniz.
ASP.NET MVC Framework - Sunum Dosyası
ASP.NET MVC Framework - Örnek Kodlar
LINQ Overview - Sunum Dosyası
LINQ Overview - Örnek Kodlar
Geleneksel hale gelen ve bilişim sektörünün en önemli etkinliklerinden olan Netron Techweek (Teknoloji Haftası) bu yıl 22-26 Eylül
tarihleri arasında Netron Altunizade Genel Merkezi'nde gerçekleşecek.
Infrastructure ve Development kategorilerinde yirminin üzerinde
oturumun olacağı bu beş günlük etkinlikte benim de iki farklı konuda
sunumlarım gerçekleşecek.
Gerçekleştireceğim sunum konuları
ve zaman bilgilerini aşağıda bulabilirsiniz. Yine etkinlik ile ilgili
detaylı bilgilere ve kayıt formuna erişmek için aşağıdaki linkleri
kullanabilirsiniz. Bu önemli etkinliği kaçırmamanızı tavsiye ediyorum.
Konuşmacı olduğum oturumlar:
| Konu |
Zaman |
| ASP.NET MVC Framework |
23 Eylül 2008 Salı / 14:30-16:30 |
| LINQ Overview |
24 Eylül 2008 Çarşamba / 14:30-16:30 |
Etkinlik Takvimi
Kayıt Formu

Bildiğiniz
gibi LINQ adını verdiğimiz dile entegre sorgularla artık .NET ortamında
koleksiyon tabanlı nesneleri sorgulayabiliyoruz. Buradaki
sorgulamaların temel amacı normalde foreach döngüleri, if-else kontrol
yapılarıyla yapabildiğimiz uzun ve karmaşık işlemleri tıpkı T-SQL'de
olduğu gibi sade Select sorguları yazarak daha basit hale getirmektir.
LINQ'in asıl çıkış noktası ise uygulama içerisinde büyük ve karmaşık
olan veri nesnelerini (entity nesnelerini) kolay ve pratik şekilde
sorgulanabilmesini sağlamak ve büyük çaplı projelerde yazılımcıların en
büyük yüklerinden birisini hafifletmektir.
LINQ to SQL ile ilgili olarak en çok sorulan sorulardan birisi de Insert, Update ve Delete
işlemlerinin nasıl gerçekleştirilebileceği. LINQ ifadelerinde Insert,
Update ve Delete gibi anahtar kelimelerle sorgular yazılamadığını
söylemeye gerek yok sanırım:) Dolayısıyla LINQ to SQL'de amaç veri
nesneleriyle çalışmak ise bir şekilde bu tip işlemleri de
gerçekleştirebilmek gerekecektir. LINQ to SQL Classes (.dbml) dosyaları veritabanında yer alan veri nesnelerini doğrudan uygulamamıza class'lar olarak aktarmamızı sağlamaktadır. Örneğin Northwind veritabanındaki Product tablosunu uygulamamızda veri class'ı olarak oluşturduğumuzda DataContext nesnesinin içerisindeki Products
özelliği(property) Products tablosundaki ürünleri koleksiyon olarak
döndürecektir. İşte bu property'nin bazı metotları bizim Insert, Update
ve Delete gibi işlemleri gerçekleştirebilmemizi sağlayacaktır. Bu
metotlardan;
- InsertOnSubmit, Insert işlemini
- DeleteOnSubmit, Delete işlemini
gerçekleştirebilmektedir.
Peki Update işlemi nerede? Update işlemini ise LINQ sorgusu sonucundan
gelen kayıt veya kayıtların değerlerini değiştirerek
gerçekleştirebileceğiz. Buradaki her üç işleminde sonuçlarının
veritabanına aktarılabilmesi için DataContext nesnesinin SubmitChanges
isimli metodunun çalıştırılması yeterli olacaktır. Aşağıdaki kod
parçalarında LINQ to SQL'de veri ekleme, silme ve güncelleme
işlemlerinin nasıl yapılabileceği görülmektedir. Kodlarda yer alan northWind adındaki nesne DataContext nesnemizdir.
Product eklenecekUrun = new Product() { ProductName = "Acer Aspire 5100", UnitPrice = 1290, UnitsInStock = 15, CategoryID = 9 };
northWind.Products.InsertOnSubmit(eklenecekUrun); // Eklenecekler listesine yeni bir ürün eklendi
Product guncellenecekUrun = northWind.Products.First(u => u.ProductID == 69);
guncellenecekUrun.ProductName = "HP Pavilion 3355"; // Seçilen ürünün ProductName özelliği değiştirildi
Product silinecekUrun = northWind.Products.First(u => u.ProductID == 79);
northWind.Products.DeleteOnSubmit(silinecekUrun); // Seçilen ürünü silinecekler listesine at
northWind.SubmitChanges(); // Yukarıda yapılan güncellemeler veritabanına gönderildi
SQL Server 2005 ve ADO.NET 2.0 ile gelen yeniliklerden sonra çoğunuzunda bildiği gibi .NET ortamında hazırladığınız nesneleri SQL Server sunucusu üzerinde CLR (Common Language Runtime)
desteğiyle çalışmasını sağlayabiliyoruz. Oluşturulan bu nesnelerin IL
çıktıları .dll'dir, dolayısıyla ilk bakışta nesneleri kodlama
aşamasında nasıl debug işlemine tabi tutacağımız bizler için soru
işareti olabilir. Bu başlıkta .NET tabanlı bir dilde yazdığımız CLR SQL
kodlarımızın çalışmasını debug etmek, kodların takibini ve analizini
yapmak için oluşturulan projede nasıl bir yol izleyeceğimizi anlatmaya
çalışacağım.
"SQL Server Projects" şablonunu oluşturduğunuzda proje içerisinde Test Script adında bir klasör ve içerisinde örnek kodları içeren Test.sql
adında bir dosya bulunmaktadır. Debug işlemi için öncelikli olarak
nesneyi çalıştıracak bir SQL ifadesine ihtiyacımız olacaktır. Bu dosya
SQL ifadesinin veya ifadelerinin saklanacağı yerdir. Nesneyi
oluşturduktan sonra öncelikli olarak bu dosyaya nesneyi test etmemizi
sağlayan SQL cümlesini ekliyoruz.
Bu işlemin ardından Test.sql dosyasını projemizin varsayılan script
dosyası olarak seçmemiz gerekiyor. Solution Explorer'da dosyanın
üzerine sağ tıkladığımızda karşımıza çıkan Set as Default Debug Script seçeneğinden dosyayı varsayılan debug dosyası olarak belirliyoruz. İlgili seçenek sağ kısımda yer alan resimde görülmektedir.
Nesneyi
oluşturduktan sonra debug işlemini başlatacağımız satıra breakpoint
ekliyoruz. Bu işlemin ardından projemizi yayınlayıp IL çıktısını
üretmemiz ve çalıştırmamız gerekecektir. Bu işlem için Solution
Explorer'da projemizin üzerine sağ tıklayıp Deploy seçeneğini seçiyoruz.
Artık
projeyi debug modunda çalıştırıp kodların adım adım takibini
yapabiliriz. Bu işlem için yine Solution Explorer'dan az önce debug
dosyası olarak ayarladığımız Test.sql dosyasına sağ tıklayıp Debug Script
seçeneğine tıklıyoruz. Dosya içerisindeki sorgu çalıştırılacak ve
derleyici seçtiğimiz satıra geldiğinde Visual Studio debug moda
geçecektir.
Bu
şekilde bir CLR SQL nesnesini oluşturan kodların debug edilmesi
sağlanabilir. Özellikle karmaşık User Defined Function, Stored
Procedure ve Trigger oluşturduğumuz durumlarda nesneyi sürekli SQL
Server'a taşımak, burada çalışma sonucuna göre tekrar Visual Studio'ya
dönüp değişiklikleri yapmak uzun ve çözümü zor bir yol olabilir. İşte
bu tip durumlarda nesnenin SQL Server'a gitmeden doğrudan CLR üzerinde
çalışmasını debug edebilmek biz programcıların işini oldukça
kolaylaştıracaktır.