Silverlight 5 WCF RIA Services: Part 4

In this article we would see how we can get the data from the database , Update it and then save it back to the database . In this post we would also see how we can Validate the data in Silverlight and features WCF Ria services provides for us to perform validation .

Lets start by updating the Code Behind of the Mainage.xaml .

Step 1:

Add a event handler for RowEditEnded .

This would give me the updated values of the Row . With this I would be able to update the update the cell and commit it. This event would help me trace the updated values . This event handler is to be added in the constrcutor of the Mainpage.xaml .

articleDataGrid.RowEditEnded += new EventHandler<DataGridRowEditEndedEventArgs>(articleDataGrid_RowEditEnded);

Step 2:

Implement the event handler for RowEditEnded .

I simply put the code to update the article and saving the context in the block .

void articleDataGrid_RowEditEnded(object sender, DataGridRowEditEndedEventArgs e)
        if (e.EditAction == DataGridEditAction.Commit)

            articleId = ((Article)e.Row.DataContext).ArticleID;

            Article art = (from article in context.Articles
                          where article.ArticleID == articleId
                          select article).First();

            art.ArticleID = ((Article)e.Row.DataContext).ArticleID;
            art.AuthorID = ((Article)e.Row.DataContext).AuthorID;
            art.Body = ((Article)e.Row.DataContext).Body;
            art.Title = ((Article)e.Row.DataContext).Title;


            MessageBox.Show("Article was sucessfully Updated"); 


    catch (Exception ex)
        MessageBox.Show("Updating Article failed :" + ex.Message);


Step 3 :

Make sure you load the context in the Constructor of the MainPage class .


We are done. Run the App. Modify the Body or the Title . The Field would be sucessfully updated .


So we are done with Updation . I still need to add the validation to this .

Lets add validation then .

For this example we will go for basic validation . Just go ahead and add a Required attribute to the Domainservice Metadata that was generated .

Your Final Metadata class (DataDomainService.metadata.cs ) would look like as follows :


namespace SL2wayWCFRia.Web
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;

    // The MetadataTypeAttribute identifies ArticleMetadata as the class
    // that carries additional metadata for the Article class.
    public partial class Article
        // This class allows you to attach custom attributes to properties
        // of the Article class.
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ArticleMetadata

            // Metadata classes are not meant to be instantiated.
            private ArticleMetadata()

            public int ArticleID { get; set; }

            public Nullable<int> AuthorID { get; set; }

            public string Body { get; set; }

            public string Title { get; set; }

Now give it a run .

Make the AuthorId field empty and press tab to move to the next field you would get a message as shown below :


This was cool . Well WCF Ria services make things very easy for us and designing a Business application should be really fun . That is what we will do in our next post . Till Then happ coding .