25 Eylül 2008

Netron Techweek'deki Sunumlarım ve Örnek Kodlar

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

16 Eylül 2008

Netron Techweek Etkinliğinde Konuşmacıyım

Netron Techweek 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

09 Eylül 2008

LINQ to SQL'de Insert, Update ve Delete İşlemleri

LINQ to SQL ile Insert,Update,Delete İşlemleriBildiğ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

05 Eylül 2008

CLR SQL ile Hazırlanan Nesneyi Visual Studio'da Debug Etmek

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.

Test.sql dosyasına eklenen SQL cümlesi"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.

clrsql_debug_image3 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.

clrsql_debug_image4

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.