It might be a bit late but let us learn WCF RIA together. I will be writing many articles about WCF RIA Services.
Part 1
This part is just to get a feeling of WCF RIA and to see an application running on WCF RIA; I am going to walk through creation of a first application through WCF RIA Services.
In a Silverlight Data Grid we will fetch and display all the records from Person table of School database using WCF RIA Service.
Creating Project
Open Visual Studio and create a new a new Silverlight Application.
Make sure you have checked the Enable WCF RIA Service checkbox.
We will have two projects in the solution.
Creating DataModel
Now let us create a DataModel. I am going to use School database here.
Right click on Server Project [web project] and add a new item.
Add ADO.Net Entity model from Data tab.
Choose the option generate from Database. If Database you want to use is listed in drop down then choose that else create a New Connection.
Provide server name and authentication and choose the database.
Either leave default name for connection string in config file or give a unique name; then after selecting table click finish.
Note: Make sure after creating Data Model that you have built the project. This is an important step.
Creating Domain Service
Right click on Server Project [web project] and add a new item. From web tab select Domain Service class
Select available Data context class from drop down. And select Person class from list of tables.
After this step you will get DomainService1.cs class created in the web project.
There are two things to notice about the class.
- Class is inherited from LinqToEntitiesDomainService<T> class
- Attributed with EnableClientAccess.
Fetching Data from at Silverlight client
Build the project and add the namespace
Add a Data Grid on design
After adding Data Grid xaml will look like below.
MainPage.Xaml
<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="RIA1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<sdk:DataGrid Name="myGrid" >
</sdk:DataGrid>
</Grid>
</UserControl>
At the code behind now we need to fetch the data from Domain service. For that
- Create an instance of Domain service class
- Load the entity set to be bind as item source of data grid.
MainPage.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using RIA1.Web;
using System.ServiceModel.DomainServices.Client;
namespace RIA1
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
DomainService1 context = new DomainService1();
LoadOperation<Person> loapPerson = context.Load(context.GetPeopleQuery());
myGrid.ItemsSource = loapPerson.Entities;
}
}
}
Press F5 to run the application,