Nis
07
2011
0

WCF RIA Services CRUD(Create,Read,Update,Delete) İşlemleri

WCF RIA Servicelerini kullandığımız uygulamalarda sunucu tarafında çalışacak olan ASP.NET projesi içerisine bir Domain Service Class eklediğimiz zaman bir önceki postumuzda da göreceğimiz gibi daha önceden eklediğimiz veri modelini seçmekte ve bu model içerisinde bulunan hangi tiplerin servis üzerinden dışarıya sunulacağını seçmekteyiz. Ayrıca bu tiplerin servis üzerinden bilgilerinin değiştirilip değiştirilemeyeceği bilgisini verdikten sonra Domain Service Class’ımız oluşmakta ve bir takım yardımcı kodlar üretilmekte. Örneğin Product tipi için yaratılan kodları inceleyelim.

public IQueryable
GetProducts()
{
return this.ObjectContext.Products;
}

public void InsertProduct(Product product)
{
if ((product.EntityState != EntityState.Detached))
{
this.ObjectContext.ObjectStateManager.ChangeObjectState(product,
EntityState.Added);
}
else
{
this.ObjectContext.Products.AddObject(product);
}
}

public void UpdateProduct(Product currentProduct)
{
this.ObjectContext.Products.AttachAsModified(currentProduct,
this.ChangeSet.GetOriginal(currentProduct));
}

public void DeleteProduct(Product product)
{
if ((product.EntityState == EntityState.Detached))
{
this.ObjectContext.Products.Attach(product);
}
this.ObjectContext.Products.DeleteObject(product);
}

Kodlara baktığımız zaman Visual Studio’nun biz yardımcı olması amacıyla CRUD işlemlerini gerçekleştiren bir takım metotları yarattığını görmekteyiz. İlk olarak GetProducts isimli metodu incelediğimizde IQueryable interface’ini implemente eden bir tip döndürdüğünü görmekteyiz. Böylece IQueryable interface’ini implemente eden bir tipin Silverlight uygulamasına döndürülmesiyle beraber bu tip üzerinde Silverlight tarafında LINQ sorgusu yazıp sunucuya göndermemiz mümkün olacaktır.

Bunun haricinde InsertProduct, DeleteProduct, UpdateProduct isimli metotları incelediğimizde metotlar içerisinde parametre olarak alınan nesnelerin statelerinin değiştirilerek ilgili işlemlerin gerçekleştirildiğini görmekteyiz.

Create İşlemi

Örnek kodlarımıza ilk olarak Category tipini yaratarak başlıyor olacağız. İlk olarak CreateCategory isimli metodumuzu yaratıyoruz ve bu metot içerisinde bir adet Category tipini örnekleyerek daha sonra WCF RIA Service’ini kullanarakta nesnemizi veritabanına ekliyoruz. Şimdi ilk olarak Category tipini örnekleyelim.

Category category = new Category()
{
CategoryName=”Bisiklet”,
Description=”Bisiklet Kategorisi”,
};

Daha sonra ise yarattığımız nesneyi WCF RIA Service üzerinden göndermemiz için tıpkı bir normal web servisini kullandığımız gibi WCF RIA Service’I için de bir proxy yaratmalıyız. Bunun için de NorthwindDomainContext tipini kullanıyor olacağız. Daha sonra ise bu tip üzerinde bulunan Categories propertysini kullanarak yarattığımız category isimli nesneyi ekliyor olacağız.

NorthwindDomainContext context = new NorthwindDomainContext();
context.Categories.Add(category);
context.SubmitChanges();

CreateCategory ismini verdiğimiz metodun tamamı ise şu şekilde olacak.

NorthwindDomainContext context = new NorthwindDomainContext();
private void CreateCategory()
{
Category category = new Category()
{
CategoryName=”Bisiklet”,
Description=”Bisiklet Kategorisi”,
};
context.Categories.Add(category);
context.SubmitChanges();
}

Read İşlemi

WCF RIA Serviceleri üzerinden okuma işlemleri yapmak için de LoadOperation isimli tipten yararlanıyor olacağız. LoadOperation tipi WCF RIA Serviceleri üzerinde bir takım veri çekme işlemleri için bizlere oldukça yardımcı olmakta. Yazdığımız sorguların sunucu tarafına gönderilmesi ve sunucudan döndürülen değerlerin de Silverlight uygulaması tarafından kullanılmasını doğrudan LoadOperation tipi üzerinden gerçekleştiriyoruz. Buradaki örneğimizde ise GetCategories isimli bir metot yazarak veritabanımızda bulunan tüm Kategorileri Silverlight tarafına çekiyor olacağız.
private void GetCategories()
{
var query = context.GetCategoriesQuery();
LoadOperation loadOp = context.Load(query);
loadOp.Completed += (sender, e) =>
{
if (!loadOp.HasError)
{
dataGrid1.ItemsSource= loadOp.Entities;
}
else
{
MessageBox.Show(loadOp.Error.Message);
loadOp.MarkErrorAsHandled();
}
};
}

Yazdığımız metodu incelersek öncelikle sunucuya göndereceğimiz sorguyu alarak işleme başlıyoruz. Çünkü NorthwindDomainContext tipi üzerinden GetCategories isimli sorguyu göndereceğimizi bildirmemiz gerekmekte. Daha sonra ise bu tip üzerindeki Load metodunu kullanarak sorgunun sunucuya gönderilmesini ve sunucudan da sonuçların alınmasını sağlıyoruz. Lambda ifadesi ile Completed eventine basit bir handler yazarak ta çağrım sırasında herhangi bir problem olup olmadığını anlayabilir eğer bir hata yoksa sonucu bir veri görüntüleme kontrolüne (örneğimizde DataGrid kontrolüne) bağlıyoruz.

Burada sunucuya gönderdiğimiz sorguları değiştirme imkanına da sahibiz. Örneğin CategoryID’si mesela 3 olan Kategori nesnesini elde etmek ilgili sorguyu Silverlight tarafında da yazıp sunucuya gönderebiliriz.

var query = context.GetCategoriesQuery();
var querybyId = from category in query
where category.CategoryID == 3
select category;
LoadOperation loadOp = context.Load(querybyId);

Bu işlemi sunucu tarafında CategoryID’sini parametre olarak alan ve Category tipinden bir sonuç döndüren bir metot yazarakta gerçekleştirebilirdik. Ancak bu çeşitlilikten de anlayabileceğiniz gibi WCF RIA Services’ın pek çok kuvvetli ve alternatifli bir çözüm olduğunu görmekteyiz.

Update ve Delete İşlemleri

WCF RIA Servicelerinde Delete işlemi de Insert işlemine oldukça benzemekte. Silmek istediğimiz entityi doğrudan context üzerinden Remove metoduna vererek entityi veritabanımızdan silebiliriz. Update işlemi için de entity üzerinde değişiklikleri yaptıktan sonra context üzerinden SubmitChanges metodunu çağırıyoruz.

context.Categories.Remove(category);
context.SubmitChanges();

Yaziyi gonderen admin in: Silverlight |
Oca
19
2011
0

2010 ve google amca :)

Yurdum insanının 2010 da en çok  aradıklarını görünce, bende aradım arkadaş benim niye aradıklarım çıkmamış yada çıkmışta unutmuş muyum diye oturup düşüneyim. Bir yandan da yazayım dedim. :) Ben de ki garipliğin az da olsa farkına varayım istedim. Ve 2011’e girince keşke şunu da arasaymışım iyi geyik yapardım diye de aklımdan geçiyor. :)  ve karşınız da TOP 10  :D

  1. 2009 da kaldım ne yapmalıyım :D
  2. Cem  kadir mi şahin mi :D
  3. Kendimi nasıl hacklerim :D
  4. Unuttuklarımı unuttuğumu nasıl anlarım :D
  5. Bu sene gs bizi yener mi  :D
  6. Çorabım nerde :D
  7. Arama desem arar mısın yine de :D
  8. Bir ayda nasıl şişman olunur :D
  9. Age of strateji kurma  :D
  10. Pijinin neden sivilceleri var :D

Yurdum İnsanımın Popüler Aramaları

Yükselen Aramalar

  • chatroulette
  • mebbis
  • key ödemeleri sorgulama
  • markafoni
  • izlesene müzik
  • facebook giriş
  • twitter
  • hotmail.com.tr
  • veli bilgilendirme sistemi
  • türkçe ingilizce çeviri

En Hızlı Araması Yükselen Ünlüler

  • justin bieber
  • quaresma
  • robinho
  • deniz baykal
  • soner sarıkabadayı
  • yıldız usmanova
  • david guetta
  • john cena
  • tarkan
  • mustafa ceceli

Bu Sene Daha Çok Dinlemek istiyorum

  • soner sarıkabadayı
  • tarkan
  • demet akalın
  • mustafa ceceli
  • emre aydın
  • ismail yk
  • ferhat göçerEn Çok Arananlar
  • facebook
  • mynet
  • hürriyet
  • milliyet
  • oyun
  • sahibinden
  • video
  • youtube
  • araba
  • e okulNedir?
  • hazan nedir
  • aşk nedir
  • bilgisayar nedir
  • teknoloji nedir
  • bilim nedir
  • sanat nedir
  • twitter nedir
  • cumhuriyet nedir
  • deprem nedir
  • iletişim nedirAraması Yükselen TV Dizileri
  • spartacus
  • aşk ve ceza
  • gönülçelen
  • sakarya fırat
  • çocuklar duymasın
  • muhteşem kraliçe
  • ezel
  • unutulmaz
  • geniş aile

·  kavak yelleri

Yaziyi gonderen admin in: Bişiler |
May
26
2010
0

as3 ile keyboard oluşturma.

oluşturduğumuz butona verdiğimiz isim “bir_btn” olarak gözükmekte gördüğünüz gibi. Foksiyonumuzda butona tıklanıldığında deger_txt’e belirtmiş olduğumuz değeri gönderir. deger_txt adında oluşturmuş txt’in türünü dinamik text yapmanız gerekmekte.

bir_btn.addEventListener(MouseEvent.CLICK, bir_ekle);
function bir_ekle(event:MouseEvent):void {
deger_txt.text = (deger_txt.text + "1");
}

Oluşturmak istediğiniz her harf için bu işlemleri tekrarlamanız gerekiyor.
oluşturduğumuz txt’e veri gönderme işlemini yaptık. Şimdi gönderdiğimiz değeri ekranda gösterebilmek için aşağıdaki fonksiyonu yazmamız gerekiyor.
function text(event:MouseEvent):void {

deger = Number(deger_txt.text);
deger_txt.text = ("");
}

kodların tamamı için tıklayınız.

Yaziyi gonderen admin in: Flash AS3 |
May
17
2010
0

:)

KEŞKE SAKLAMAK İSTEDİKLERİMİZİ BÖYLE SAKLAMAYI ÖĞRENEBİLSEK :)

Actionscript Code:
on (rollOver) {
this.swapDepths(this._parent.getNextHighestDepth());
this.onEnterFrame = function() {
this.nextFrame();
if (this._currentframe == this._totalframes) {
delete this.onEnterFrame;
}
};
}
on (rollOut) {
this.onEnterFrame = function() {
this.prevFrame();
if (this._currentframe == 1) {
delete this.onEnterFrame;
}
};
}

Yaziyi gonderen admin in: Flash AS3 |
Mar
22
2010
0

Bedava Tristit Browser

Ücretsiz olarak indirilebilen TRISTIT BROWSER sunduğu hizmetler ile her anlamda fark yaratıyor.

İçerisinde haber,müzik,resim galerisi,eğlence dünyası,arama seçenekleri,uygulama dükkanı,bilgi servisleri,videolar  gibi bir çok içerik sunuyor. İşin güzel olan kısmı ise uygulamanın ve içeriklerin tamemen ücretsiz olması.

Ücretsiz Mesajlaşma’ya Alternatif

“Ücretsizdir, Deneyiniz!” sloganıyla yola çıkan Tristit Browser, Ücretsiz mesajlaşmaya da imkan sağlıyor. Bu özelliği ile bir çok kullanıcının gözdesi bir platform olacağa benziyor.
Internet’e Erişmenin Kolay Yolu

Google üzerinden tek tıklama ile en hızlı sonuçlara ulaşmanıza imkan sağlayan Tristit Browser ihtiyacınız olabilecek her ayrıntıyı tek bir platformda toplamış.

Son olarak çok iyi düşünülmüş ve kullanıcıya her istediğini tek bir alanda verebilecek kapasitede olan Tristit Browser Cep Telefonunuzu bir teknoloji merkezine dönüştürüyor.

Yaziyi gonderen admin in: Bişiler |