12 Ocak 2010 Salı

Linq to Sharepoint, SPMetal


Sharepoint 2010 ile birlikte gelen yeniliklerden birisi olan LinqToSharepoint ile birlikte artık Caml sorgusu yerine Linq sorguları ile verilerimizi çekebileceğiz.
SP2010 öncesinde CodePlex’de proje bulunmaktaydı.

Sorgularımız oluşturmak için 14 klasörü içerisinde bulunan BIN klasöründeki SPMetal.exe den yararlanmaktayız. SPMetal ile oluşturulan kodu projemize ekledikten sonra listelerimize, resim kütüphanelerimize, sayfalarımıza ulaşıp sorgulayabiliriz.

Gelin sade bir örnekle bunu inceleyelim.
Öncelikle haberlerimizin tutulacağı custom list oluşturalım adına “Haberler” diyelim.
Daha sonrasında haber resimlerinin tutulacağı resim kütüphanemizi oluşturalım adına “Haber Resimleri” diyelim
“Haberler” listemize Lookup Field olarak “Haber Resimleri” ekleyelim.
Haberlerin kolonları aşağıdaki gibi olsun
Örnek bir kaç haber girdikten sonra Visual Studio 2010 ile birlikte gelen Visual Web Part ile WebPartımızı geliştirelim.


Proje teması olarak Sharepoint seçeneği altındaki 2010 da bulunan Visaul Web Part seçtikten sonra projemizi deploy edeceğimiz siteyi yazıyoruz.
Projemizi oluşturduktan sonra SPMetal ile Entities kodumuzu oluşturalım.
Bunun için .bat dosyası oluşturmamız gerekmekte ve gerekli parametreleri girmeliyiz.

Set SPMETAL="C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN\SPMETAL.EXE"
%SPMETAL% /web:YOURWEBSITE /namespace:Entities /code:Entities.cs

Yukarıdaki komutları not defterine yazıp “SPMetal.bat” olarak kaydedip çalıştırdığımızda Entities.cs olarak kodları oluşturmakta. YOURWEBSITE kısmını siz kendi sitenize göre değiştirmeyi unutmayınız.
Projemizi oluşturup ve Entities.cs’yi ekledikten sonra
böyle bir görüntü elde edeceğiz. Visual Web Partımızın adını HaberlerVisualWp olarak verdiğimizi varsayalım.
ISAPI klasörü altındaki Microsoft.Sharepoint.Linq dllini referans olarak projemize ekliyoruz.
using System.Linq;
using Microsoft.SharePoint.Linq;

namespacelerini ekliyoruz ve ardından linq sorgumuzu yazmaya geçelim.
Kategorisi “Bizden” olan haberleri listeledik. Burada en çok hoşuma giden nokta seçenek tipinde oluşturduğum fieldın seçeneklerinin Intellisense şeklinde kodda yer alması.


Kodumuzu yazdıktan sonra projemize deploy diyerek projemizi oluştururken belirttiğimiz siteye deploy ediyoruz.
İster F5 ile projeyi deploy ediyip yeni sayfa oluştur ister yukarıdaki gibi deploy deyip var olan bir sayfanıza WebPartı eklersiniz.
Deploy dedikten sonra ilgili sayfayı düzenleyip webpartımızı ekliyoruz. Haberler WebPartımız “Custom” altında web partlar içerisinde yerini almaktadır.

SP2007’de olduğu gibi SP2010’da da yardımcı toollar çıkmaya başladı. SPMetal’i görselleştiren .bat dosyası oluşturmanıza gerek kalmayan uygulamaya buradan ulaşabilirsiniz.

LinqToSharepoint de karşılaştığım sıkıntı senkron olmaması. Sharepoint portalımızda değişiklik yaptığımızda örneğin seçeneklere yeni bir seçenek eklediğimizde. Bunu Enitities.cs kodumuza da yansıtmamız gerekir isterseniz kendiniz yazarak ekleyebilirsiniz ama daha sağlıklı olması açısından tekrar SPMetal uygulamasını çalıştırıp kodu güncel hale getirmeliyiz.

Channel9'daki videoyu tavsiye ederim.

Hiç yorum yok: