15 Ocak 2013 Salı

Asp.Net Url Routing Kullanımı

Bu yazımda Url Routing yapısının mimarisini ve kullanımı anlatacağım.Tabi Url routing'e geçmeden önce  Query String'den biraz bahsedelim.Query string Framework 4.0'dan önce projelerimizin vazgeçilmez veri  taşıma yöntemidir.

Örnek;
http://localhost:61802/?ID=30.11.2012
Şeklinde ID değişkenine değer yolluyorduk sonrada istediğimiz yerde değişkendeki değeri kullanabiliyoruz,Peki neden Url Routing kullanmalıyız;

  • Query String'ler sayfa aramasında indexleme işlemlerinde sorun çıkartması, Url Routing ise seo yapısı olduğu için arama motorlarında üst sıralarda, hızlı ve klasör bazlı indexleyebiliyor . 
  • Parametreler fazla oldukça işin içinden çıkılmaz hal alması. Url Routing'de belirli standartlarda yaptığımız için herhangi bir sorun çıkartmaması.
  • Query String Url'leri Kullanıcı tarafından karışık bir görüntüsü olması.

Url Routing Kullanımı
Öncelikle;
  1. New Project > Web > Asp.Net Empty Web Application ve framework 4.0 projesi olmasına dikkat ediyoruz,çünkü Url Routing framework 4.0 ile beraber geldi.
  2. Projemizde Sağ Tıklıyoruz > Add > New Item > Global Application Class(Global.asax) seçiyoruz.
  3. Global.asax dosyasını açtıktan sonra;
  4. Referance olarak aşağıdaki System.Web.Routing ekliyoruz ; 



5.Aşağıdaki gibi RouteCollection tipinden değişken alan metodu yazıyoruz bu metod urlleri register işlemi yapacak.buraya istediğimiz kadar url formatı ekleyebiliriz.







6.Sıra geldi metodu çağırmaya,metodu uygulamamız start olduğunda çağıracağız yani Application_Start metodunu kullanacağız bu metod,Uygulamamız start olduğunda ilk bu metod çalışır.
7.Url Routing işlemlerini tanımladıktan sonra nasıl kullanıcağımıza bakalım;
Sayfa İçerisinde Kullanımı

1. ilk olarak query string gibi değer atama işlemi yapalım.
 Yukarıda başlık değişkenine istediğimiz parametreyi atayabiliriz.burada dikkat etmemiz gereken nokta Türkçe karakterleri kullanmamalıyız.bunun için Türkçe karakterleri çeviren bir metoda ihtiyacınız olacak.

2.Atadığımız değerleri nasıl okuyacağımıza bakalım;
 RouteData.Values metodunu kullanarak değişkene atadığımız değeri alırız.Bu şekilde istediğimiz kadar url aracılığı ile veri taşıyabiliriz.


14 Ocak 2013 Pazartesi

WITH (NOLOCK) Hayat Kurtarır :)

NOLOCK Sql Server'da tablolarımızın kilitlenmesini(deadlock) olmasını engeller,normal şartlarda tablodaki crud işlemlerinde, örnek: update sorgudan cevap dönene kadar tabloyu lock(deadlock) eder başka bir işlem yapmaya izin vermez. Lock ettiği için farklı bir sorgudan değer bir önceki işlem bitmeden değer döndürmez.Bu durum orta ölçekli projelerde hissedilmese de büyük  projelerde başımızı belaya sokabilir.
Kullanımı;
select * from Customers WITH (NOLOCK)


Tablo adından sonra  "WITH (NOLOCK)" yazmamız yeterli olacaktır.fakat NOLOCK nerede kullanacağımız çok önemli buna çok dikkat etmeliyiz,eğer anlık işlemler çok ise NOLOCK kullanmanız bize avantajdan ziyade dezavantaja dönüşebilir.
Örnek verecek olursak E-ticaret sitesinden bir ürünü iki kişiye satma ihtimaliniz yüksek çünkü tabloyu lock etmediğiniz için birden çok kişi aynı ürünü satabiliriz.Tabi bu işlemleri "TRANSACTION" ile yapabilirseniz bir sıkıntı yaşamazsınız.

9 Ocak 2013 Çarşamba

EntitySet'i güncelleştirilemiyor çünkü bir DefiningQuery'si var ve öğesinde geçerli işlemi desteklemek için hiçbir üyesi mevcut değil.

 "EntitySet'i güncelleştirilemiyor çünkü bir DefiningQuery'si var ve <ModificationFunctionMapping> öğesinde geçerli işlemi desteklemek için hiçbir <UpdateFunction> üyesi mevcut değil." Hatası ile karşılaştıysanız.
Çözümü:insert veya update yaptığınız tabloda primary key olmamasından dolayı böyle bir hata almaktadır.tabloya primary key eklerseniz düzelecektir.