<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Guy Burstein : .Net RIA Services</title><link>http://blogs.msdn.com/bursteg/archive/tags/.Net+RIA+Services/default.aspx</link><description>Tags: .Net RIA Services</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>.Net RIA Services: Custom Validation</title><link>http://blogs.msdn.com/bursteg/archive/2009/04/14/net-ria-services-custom-validation.aspx</link><pubDate>Tue, 14 Apr 2009 21:23:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9548942</guid><dc:creator>Guy Burstein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bursteg/comments/9548942.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bursteg/commentrss.aspx?PostID=9548942</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bursteg/rsscomments.aspx?PostID=9548942</wfw:comment><description>&lt;h1&gt;.Net RIA Services: Custom Validation&lt;/h1&gt;  &lt;p&gt;This is another post in a series of posts about building applications with Microsoft &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/tags/.Net+RIA+Services/default.aspx"&gt;.Net RIA Services&lt;/a&gt; and &lt;strong&gt;Silverlight 3 and ASP.Net&lt;/strong&gt;. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/04/build-a-simple-application-with-net-ria-services-silverlight-3.aspx"&gt;Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/07/build-a-simple-application-with-net-ria-services-silverlight-3-part-2.aspx"&gt;Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/14/Net-RIA-Services-DataForm-Validation.aspx"&gt;.Net RIA Services Part 3: DataForm and Validation&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/14/net-ria-services-sharing-code-between-the-client-and-server.aspx"&gt;.Net RIA Services: Sharing Code between the Client and Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/11/using-domaindatasource-in-asp-net.aspx"&gt;Using DomainDataSource in ASP.Net&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/12/asp-net-DomainDataSource-Select-Parameters.aspx"&gt;ASP.Net DomainDataSource with Select Parameters&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/12/asp-net-queryextender-control-and-domaindatasource.aspx"&gt;ASP.Net QueryExtender Control and DomainDataSource&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In my previous post &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/14/Net-RIA-Services-DataForm-Validation.aspx"&gt;.Net RIA Services Part 3: DataForm and Validation&lt;/a&gt; I explained how to add validation metadata to entities and showed how the DataForm control enforces them. I used simple validation metadata attributes such as &lt;strong&gt;RegularExpressionAttribute&lt;/strong&gt;, &lt;strong&gt;RequiredAttribute&lt;/strong&gt; and &lt;strong&gt;StringLengthAttribute&lt;/strong&gt; that help us in basic scenarios.&lt;/p&gt;  &lt;p&gt;If you want to write custom validation, you can inherit from &lt;strong&gt;System.ComponentModel.DataAnnotations.ValidationAttribute&lt;/strong&gt;, but a more simple way would be to write a validation method, and share it between the server side and the client side, as I explained in my previous post &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/14/net-ria-services-sharing-code-between-the-client-and-server.aspx"&gt;.Net RIA Services: Sharing Code between the Client and Server&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In CustomerValidation.shared.cs file (in the server side) I wrote the following method, that takes the value of a property and returns an indication whether it is valid or not.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;Shared&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CustomerValidation&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; [&lt;span style="color: #2b91af"&gt;Shared&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsEmailEndsWithDotCom(&lt;span style="color: blue"&gt;string&lt;/span&gt; email)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (email.EndsWith(&lt;span style="color: #a31515"&gt;&amp;quot;.com&amp;quot;&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;To apply this validation logic on an entity property, use the CustomValidationAttribute with the about type and method name, and the error message to display.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;sealed&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CustomerMetadata&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; ...&amp;#160; &lt;br /&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;strong&gt;[&lt;span style="color: #2b91af"&gt;CustomValidation&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;CustomerValidation&lt;/span&gt;),         &lt;br /&gt;&amp;#160;&amp;#160; &lt;span style="color: #a31515"&gt;&amp;quot;IsEmailEndsWithDotCom&amp;quot;&lt;/span&gt;,&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; ErrorMessage = &lt;span style="color: #a31515"&gt;&amp;quot;Customer\'s email address must end with .com&amp;quot;&lt;/span&gt;)]&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Email;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; ...&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;At runtime, the framework will invoke this method passing it the property value, and if it returns False, the error message will be shown.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services: Custom Validation" border="0" alt=".Net RIA Services: Custom Validation" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/9fe02a7a2.NetRIAServicesCustomValidation_123F5/image_912bb1a3-24b8-4ba0-90b7-d9010561412b.png" width="640" height="234" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The above sample is also nice for scenarios is which the logic is independent of any other property about the entity that’s being validated. In cases where you need additional information about the entity to perform the validation logic, you can use a more complex signature of the validation method.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;Shared&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CustomerValidation&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{ &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; [&lt;span style="color: #2b91af"&gt;Shared&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; EnsureBusinessEmailAddress(&lt;span style="color: blue"&gt;string&lt;/span&gt; email,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ValidationContext&lt;/span&gt; ctx,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ValidationResult&lt;/span&gt; result)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; result = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt; cust = (&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt;)ctx.ObjectInstance;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (cust.IsBusiness)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (!cust.Email.EndsWith(&lt;span style="color: #a31515"&gt;&amp;quot;.com&amp;quot;&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; result = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ValidationResult&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Business Customer's email address must end with .com&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In this approach I receive not only the property value, but also an instance of &lt;strong&gt;ValidationContext&lt;/strong&gt; that provides me with some information about the entity and property being validated and also a reference to the entity instance itself.&lt;/p&gt;  &lt;p&gt;Using it is the same, except that here I pass the error message in the out parameter &lt;strong&gt;ValidationResult&lt;/strong&gt;, instead of providing it in the validation attribute.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;sealed&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CustomerMetadata&lt;/span&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; ...&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160; [&lt;span style="color: #2b91af"&gt;CustomValidation&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;CustomerValidation&lt;/span&gt;), &lt;span style="color: #a31515"&gt;&amp;quot;EnsureBusinessEmailAddress&amp;quot;&lt;/span&gt;)]&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Email;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; ...&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services: Custom Validation" border="0" alt=".Net RIA Services: Custom Validation" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/9fe02a7a2.NetRIAServicesCustomValidation_123F5/image_1c295ca1-8233-4091-9e0e-b485c17706aa.png" width="640" height="234" /&gt; &lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9548942" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bursteg/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+Framework+4.0/default.aspx">.Net Framework 4.0</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+RIA+Services/default.aspx">.Net RIA Services</category></item><item><title>.Net RIA Services: Sharing Code between the Client and Server</title><link>http://blogs.msdn.com/bursteg/archive/2009/04/14/net-ria-services-sharing-code-between-the-client-and-server.aspx</link><pubDate>Tue, 14 Apr 2009 20:44:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9548868</guid><dc:creator>Guy Burstein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bursteg/comments/9548868.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bursteg/commentrss.aspx?PostID=9548868</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bursteg/rsscomments.aspx?PostID=9548868</wfw:comment><description>&lt;h1&gt;.Net RIA Services: Sharing Code between the Client and Server&lt;/h1&gt;  &lt;p&gt;This is another post in a series of posts about building applications with Microsoft &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/tags/.Net+RIA+Services/default.aspx"&gt;.Net RIA Services&lt;/a&gt; and &lt;strong&gt;Silverlight 3 and ASP.Net&lt;/strong&gt;. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/04/build-a-simple-application-with-net-ria-services-silverlight-3.aspx"&gt;Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/07/build-a-simple-application-with-net-ria-services-silverlight-3-part-2.aspx"&gt;Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/14/Net-RIA-Services-DataForm-Validation.aspx"&gt;.Net RIA Services Part 3: DataForm and Validation&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/11/using-domaindatasource-in-asp-net.aspx"&gt;Using DomainDataSource in ASP.Net&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/12/asp-net-DomainDataSource-Select-Parameters.aspx"&gt;ASP.Net DomainDataSource with Select Parameters&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/12/asp-net-queryextender-control-and-domaindatasource.aspx"&gt;ASP.Net QueryExtender Control and DomainDataSource&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In this I’ll talk about how to &lt;strong&gt;share code between the server side and the Silverlight client application&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;One of the great things in &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/tags/.Net+RIA+Services/default.aspx"&gt;.Net RIA Services&lt;/a&gt; is that code that we wrote in the server side can be resued in the client side. To do that, create a new class in the server side called with &lt;strong&gt;.shared.cs&lt;/strong&gt; or &lt;strong&gt;.shared.vb&lt;/strong&gt; suffix (CustomerValidation.shared.cs in this sample).&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services Sharing Code between Client and Server" border="0" alt=".Net RIA Services Sharing Code between Client and Server" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/cca.NetRIAServicesSharingCodebetweentheC_11F9C/image_d0375830-c854-408a-bfd5-7f537c4c9596.png" width="201" height="235" /&gt;&lt;/p&gt;  &lt;p&gt;In this class, code what you’d live to share with the client side, under the rational limitations. To make the code sections shared between the server and the client, decorate them with &lt;strong&gt;System.Web.Ria.Data.SharedAttribute&lt;/strong&gt;. For example:&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;Shared&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CustomerValidation&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; [&lt;span style="color: #2b91af"&gt;Shared&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsEmailEndsWithDotCom(&lt;span style="color: blue"&gt;string&lt;/span&gt; email)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (email.EndsWith(&lt;span style="color: #a31515"&gt;&amp;quot;.com&amp;quot;&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; } &lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;After you build the solution, Visual Studio will copy this file to the Silverlight client application:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services Sharing Code between Client and Server" border="0" alt=".Net RIA Services Sharing Code between Client and Server" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/cca.NetRIAServicesSharingCodebetweentheC_11F9C/image_d25a18e7-fa05-4928-ad2b-6a3afe6a70bd.png" width="207" height="179" /&gt; &lt;/p&gt;  &lt;p&gt;and now, you can use this code in the client application, as you did in the server side. Here is an example of me using the shared code in the HomePage class in the Silverlight client application.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services Sharing Code between Client and Server" border="0" alt=".Net RIA Services Sharing Code between Client and Server" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/cca.NetRIAServicesSharingCodebetweentheC_11F9C/image_7880780a-99a7-40d0-951d-09f550adc8b9.png" width="480" height="199" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9548868" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bursteg/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+Framework+4.0/default.aspx">.Net Framework 4.0</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+RIA+Services/default.aspx">.Net RIA Services</category></item><item><title>.Net RIA Services Part 3: DataForm and Validation</title><link>http://blogs.msdn.com/bursteg/archive/2009/04/14/net-ria-services-part-3-dataform-and-validation.aspx</link><pubDate>Tue, 14 Apr 2009 20:15:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9548825</guid><dc:creator>Guy Burstein</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bursteg/comments/9548825.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bursteg/commentrss.aspx?PostID=9548825</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bursteg/rsscomments.aspx?PostID=9548825</wfw:comment><description>&lt;h1&gt;.Net RIA Services Part 3: DataForm and Validation&lt;/h1&gt; &lt;a href="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part3_CD54/silverlight_logo9_2.gif"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px 10px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services DataForm Validation" border="0" alt=".Net RIA Services DataForm Validation" align="right" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part3_CD54/silverlight_logo9_thumb.gif" width="224" height="75" mce_src="http://blogs.microsoft.co.il/blogs/bursteg/silverlight_logo_5141F01B.gif" /&gt;&lt;/a&gt;This is the forth part in a series of posts about building applications with &lt;strong&gt;Microsoft .Net RIA Services&lt;/strong&gt; and &lt;strong&gt;Silverlight 3&lt;/strong&gt;. In &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/04/build-a-simple-application-with-net-ria-services-silverlight-3.aspx" mce_href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/04/build-a-simple-application-with-net-ria-services-silverlight-3.aspx"&gt;part 1&lt;/a&gt; of this series I created a new application, created a simple data model and used the &lt;strong&gt;Domain Service&lt;/strong&gt; and &lt;strong&gt;Domain Context&lt;/strong&gt; to retrieve data and bind it to a &lt;strong&gt;DataGrid&lt;/strong&gt;. In &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/07/build-a-simple-application-with-net-ria-services-silverlight-3-part-2.aspx"&gt;part 2&lt;/a&gt; we replaced the manual work needed to get the data from the server with the &lt;strong&gt;DomainDataSource&lt;/strong&gt; that provided some more advanced scenarios such as filtering and sorting. In this post we’ll introduce the &lt;strong&gt;DataForm&lt;/strong&gt; control and talk more about data validation.   &lt;h3&gt;Using the DataForm control&lt;/h3&gt;  &lt;p&gt;Add A &lt;strong&gt;DataForm&lt;/strong&gt; Control and bind it to the current item of the DataGrid. Open &lt;strong&gt;Views\HomePage.xaml&lt;/strong&gt;, and add a &lt;strong&gt;DataForm&lt;/strong&gt; Control right after the &lt;strong&gt;DataPager&lt;/strong&gt;.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LayoutRoot&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;White&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: blue"&gt;&lt;font size="2"&gt;&amp;gt;          &lt;br /&gt;          &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; ...&lt;/span&gt;&amp;#160; &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;dataControls:DataPager&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;PageSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;3&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;{Binding Data, ElementName=customersDataSource}&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;dataControls:DataForm&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;customerDataForm&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Customer Data&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;CurrentItem&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;{Binding ElementName=dataGrid, Path=SelectedItem}&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;dataControls:DataForm&lt;/span&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;&lt;font size="2"&gt;&amp;gt;          &lt;br /&gt;          &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; ...        &lt;br /&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;       &lt;br /&gt;&lt;font size="2"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;If you run the application, you should see the &lt;strong&gt;DataForm&lt;/strong&gt; below the DataGrid. Move between the items, and see how the displayed customer’s data is changing as you do that. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services DataForm Validation" border="0" alt=".Net RIA Services DataForm Validation" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part3_CD54/image_9a8e1e51-f9a3-4982-ba89-539cec321f23.png" width="640" height="483" /&gt; &lt;/p&gt;  &lt;p&gt;To edit an item, click the pencil icon on the &lt;strong&gt;DataForm&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services DataForm Validation" border="0" alt=".Net RIA Services DataForm Validation" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part3_CD54/image_642083a1-f0c1-4fd1-8dae-5ca754538983.png" width="102" height="91" /&gt; &lt;/p&gt;  &lt;p&gt;When you do that, the controls will be replaced with input controls, and &lt;strong&gt;Save&lt;/strong&gt; and &lt;strong&gt;Cancel&lt;/strong&gt; buttons will show up.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services DataForm Validation" border="0" alt=".Net RIA Services DataForm Validation" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part3_CD54/image_edfbd1f7-c62e-4374-bb46-bbfada1c5b1c.png" width="188" height="76" /&gt; &lt;/p&gt;  &lt;p&gt;If you change a value of a property in a customer’s data, you’ll get a notification that this data was changed and the customer is not “dirty”.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services DataForm Validation" border="0" alt=".Net RIA Services DataForm Validation" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part3_CD54/image_bb5fd4e2-6ac1-47dd-9ce4-866379481b45.png" width="152" height="91" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Notice&lt;/strong&gt; that changes that are made here are tracked only in memory. This means, that by pressing the Save button, you’ll switch over to Display more, but the &lt;strong&gt;data is not saved to the server&lt;/strong&gt;. To enable submitting changes back to the server, we need to add a submit button below the &lt;strong&gt;DataForm&lt;/strong&gt;.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;btnSubmit&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;120&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;btnSubmit_Click&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Submit&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;As the implementation of the submit button, you’ll need to commit the changes of the current item that is being edited (similar to EndCurrentEdit() in Windows Forms), and only then pushing the changes back the server.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnSubmit_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.customerDataForm.CommitItemEdit();&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.customersDataSource.SubmitChanges();&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Adding Validation Logic using Data Annotations&lt;/h3&gt;  &lt;p&gt;One of the great things in .Net RIA Services is that code that we wrote in the server side can be resued in the client side. This means that we can reuse the validation annotations that we have for our domain entities.&lt;/p&gt;  &lt;p&gt;To annotate entities with validation semantics, open the metadata file for the domain service (&lt;strong&gt;BankDomainService.metadata.cs&lt;/strong&gt; in the sample). In this file, you’ll find partial classes that match your domain classes (class &lt;strong&gt;Customer&lt;/strong&gt; in this sample), decorated with &lt;strong&gt;MetadataTypeAttribute&lt;/strong&gt; pointing to a metadata type the is also generated here as an inner class. The metadata class has fields / properties that match the properties that the original class has, that you can annotate with validation requirements.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;[&lt;span style="color: #2b91af"&gt;MetadataTypeAttribute&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt;.&lt;span style="color: #2b91af"&gt;CustomerMetadata&lt;/span&gt;))]&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;sealed&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CustomerMetadata&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; { &lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; CustomerID;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsBusiness;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Name;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; City;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Email;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EntitySet&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Account&lt;/span&gt;&amp;gt; Accounts;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In this examples we’ll use the &lt;strong&gt;Regular Expression&lt;/strong&gt; attribute, the &lt;strong&gt;String Length&lt;/strong&gt; Attribute and the &lt;strong&gt;Required&lt;/strong&gt; Attribute to validate the customer entity, but I encourage you to explore the &lt;strong&gt;System.ComponentModel.DataAnnotations&lt;/strong&gt; namespace more deeply.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;sealed&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CustomerMetadata&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; CustomerID;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsBusiness;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; [&lt;span style="color: #2b91af"&gt;Required&lt;/span&gt;(ErrorMessage=&lt;span style="color: #a31515"&gt;&amp;quot;Please provide a name for the customer&amp;quot;&lt;/span&gt;)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; [&lt;span style="color: #2b91af"&gt;StringLength&lt;/span&gt;(30, &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; ErrorMessage=&lt;span style="color: #a31515"&gt;&amp;quot;Customer's name cannot be more than 30 characters&amp;quot;&lt;/span&gt;)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Name;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; [&lt;span style="color: #2b91af"&gt;StringLength&lt;/span&gt;(30, &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; ErrorMessage = &lt;span style="color: #a31515"&gt;&amp;quot;Customer's city cannot be more than 15 characters&amp;quot;&lt;/span&gt;)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; City;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; [&lt;span style="color: #2b91af"&gt;RegularExpression&lt;/span&gt;(&lt;span style="color: #a31515"&gt;@&amp;quot;^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$&amp;quot;&lt;/span&gt;,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; ErrorMessage=&lt;span style="color: #a31515"&gt;&amp;quot;Please provide a valid email address&amp;quot;&lt;/span&gt;)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Email;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EntitySet&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Account&lt;/span&gt;&amp;gt; Accounts;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Build the project and Visual Studio will regenerate the client side code for the domain context, that will now also contain the metadata.&lt;/p&gt;  &lt;p&gt;If you now run the application, and try to update a customer’s entity with values that do not match the validations, you will get a visual notification and the data will not be updated to the server.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services DataForm Validation" border="0" alt=".Net RIA Services DataForm Validation" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part3_CD54/image_d080b927-ac70-4537-a850-05de245332b1.png" width="640" height="571" /&gt; &lt;/p&gt;  &lt;p&gt;In this post I talked about the new &lt;strong&gt;DataForm&lt;/strong&gt; control in .&lt;strong&gt;Net RIA Services&lt;/strong&gt;, showed how to add it to our application and how it works. Then we talked a little bit about annotating the entities with validation requirements and saw how the &lt;strong&gt;DataForm&lt;/strong&gt; enforces them.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9548825" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bursteg/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+Framework+4.0/default.aspx">.Net Framework 4.0</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+RIA+Services/default.aspx">.Net RIA Services</category></item><item><title>ASP.Net DomainDataSource with Select Parameters</title><link>http://blogs.msdn.com/bursteg/archive/2009/04/12/asp-net-domaindatasource-with-select-parameters.aspx</link><pubDate>Sun, 12 Apr 2009 10:19:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9546234</guid><dc:creator>Guy Burstein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bursteg/comments/9546234.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bursteg/commentrss.aspx?PostID=9546234</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bursteg/rsscomments.aspx?PostID=9546234</wfw:comment><description>&lt;h1&gt;ASP.Net DomainDataSource with Select Parameters&lt;/h1&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 20px 0px 20px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ASP.Net DomainDataSource with Select Parameters" border="0" alt="ASP.Net DomainDataSource with Select Parameters" align="right" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/ASP.NetDomainDataSourcewithParameters_86A0/ASP.Net_68ed1f09-cf87-4003-8cc4-a6d44660da82.jpg" width="235" height="45" /&gt; &lt;/p&gt;  &lt;p&gt;Continuing with &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/tags/.Net+RIA+Services/default.aspx"&gt;.Net RIA Services&lt;/a&gt; with Silverlight and ASP.Net. In the last port I wrote about &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/11/using-domaindatasource-in-asp-net.aspx"&gt;Using DomainDataSource in ASP.Net&lt;/a&gt;, and showed its basic usage. In this post I’ll show a more advanced scenario in which you want to use a &lt;strong&gt;domain service select method that takes parameters&lt;/strong&gt;, and get the parameter value from a control on the form.&lt;/p&gt;  &lt;p&gt;In the previous post, we had a GridView bound to a &lt;strong&gt;DomainDataSource&lt;/strong&gt; that called a Select Method on the &lt;strong&gt;DomainService&lt;/strong&gt;.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;GridView&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;GridView&amp;quot;&lt;/span&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: red"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: red"&gt;DataSourceID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;customersDataSource&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;GridView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DomainDataSource&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;customersDataSource&amp;quot;&lt;/span&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: red"&gt;DomainServiceTypeName&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Samples.Bank.Domain.BankDomainService&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: red"&gt;SelectMethod&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;GetCustomers&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;The output was:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ASP.Net DomainDataSource with Select Parameters" border="0" alt="ASP.Net DomainDataSource with Select Parameters" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/ASP.NetDomainDataSourcewithParameters_86A0/image2_82351aac-875a-41b9-b99c-a544a82ecb27.png" width="480" height="283" /&gt;&lt;/p&gt;  &lt;p&gt;Now we want to filter the output list by the &lt;strong&gt;City&lt;/strong&gt; property. To do that, we first have to add a method in our Domain Service that returns the data filtered by a city parameter.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;BankDomainService&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;LinqToSqlDomainService&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;BankDataContext&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt;&amp;gt; GetCustomers()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Context.Customers;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160; &lt;strong&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt;&amp;gt; GetCustomersByCity(&lt;span style="color: blue"&gt;string&lt;/span&gt; city)&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160; {&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (city == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; GetCustomers();&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; GetCustomers().Where(c =&amp;gt; c.City == city);&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160; }&lt;/strong&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p style="margin: 0px"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; ...&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Notice that &lt;strong&gt;GetCustomersByCity&lt;/strong&gt; method uses the &lt;strong&gt;GetCustomers&lt;/strong&gt; method that returns an &lt;strong&gt;IQueryable&amp;lt;Customer&amp;gt;&lt;/strong&gt; and filters the result by city.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;To select which city we want to filter by, lets add a ListBox with some items:&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListBox&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;lstCities&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;AutoPostBack&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Tel Aviv&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Raanana&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Ramat Gan&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; that I had to specify AutoPostBack=”true” in make any change to the filter, since this is a server control.&lt;/p&gt;  &lt;p&gt;Now, in order to filter the data source according to the domain method with the select parameter I have to specify a &lt;strong&gt;SelectParameter&lt;/strong&gt; that takes its value from the ListBox, and change the select method to execute.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DomainDataSource&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;customersDataSource&amp;quot;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160; DomainServiceTypeName&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Samples.Bank.Domain.BankDomainService&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: red"&gt;SelectMethod&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;&lt;strong&gt;GetCustomersByCity&lt;/strong&gt;&amp;quot;&amp;gt;         &lt;br /&gt;        &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SelectParameters&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ControlParameter&lt;/span&gt; &lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;city&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ControlID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;lstCities&amp;quot;&lt;/span&gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;PropertyName&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;SelectedValue&amp;quot;&lt;/span&gt;&amp;#160; &lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;String&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SelectParameters&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: blue"&gt;&lt;strong&gt;&amp;gt;          &lt;br /&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Now, If we run the application, we can select items in the ListBox, and the items in the GridView will be filtered by the city value.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ASP.Net DomainDataSource with Select Parameters" border="0" alt="ASP.Net DomainDataSource with Select Parameters" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/ASP.NetDomainDataSourcewithParameters_86A0/image_b7961f1e-83fe-46d9-8be2-e24fd8e6c7d9.png" width="480" height="168" /&gt; &lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9546234" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+Framework+4.0/default.aspx">.Net Framework 4.0</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+RIA+Services/default.aspx">.Net RIA Services</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/ASP.Net/default.aspx">ASP.Net</category></item><item><title>Using DomainDataSource in ASP.Net</title><link>http://blogs.msdn.com/bursteg/archive/2009/04/11/using-domaindatasource-in-asp-net.aspx</link><pubDate>Sat, 11 Apr 2009 23:16:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9545799</guid><dc:creator>Guy Burstein</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bursteg/comments/9545799.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bursteg/commentrss.aspx?PostID=9545799</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bursteg/rsscomments.aspx?PostID=9545799</wfw:comment><description>&lt;h1&gt;Using DomainDataSource in ASP.Net&lt;/h1&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 20px 0px 20px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DomainDataSource ASP.Net" border="0" alt="DomainDataSource ASP.Net" align="right" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/UsingDomainDataSourceinASP.Net_118F0/ASP.Net_5134119b-537f-4d11-ac7b-1d412d2e726c.jpg" width="277" height="53" /&gt; &lt;/p&gt;  &lt;p&gt;In ASP.Net 2.0 we were introduced to this concept of Data Source controls. We got the &lt;strong&gt;ObjectDataSource&lt;/strong&gt;, &lt;strong&gt;XmlDataSource&lt;/strong&gt; and &lt;strong&gt;SqlDataSource&lt;/strong&gt; that let us bind a GridView or a ListBox to some data without having to write any additional code. In .Net Framework 3.5 we got &lt;strong&gt;LinqDataSource&lt;/strong&gt; and with .Net Framework 3.5 – the &lt;strong&gt;EntityDataSource&lt;/strong&gt;. In the future of ASP.Net, among other significant improvements around data access, we get a new way of accessing our data – &lt;strong&gt;DomainDataSource&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;The benefits of using the &lt;strong&gt;DomainDataSource&lt;/strong&gt; is that is give us nice separation from the way our Data Model is represented (&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/tags/LINQ+to+Sql/default.aspx"&gt;LINQ to SQL&lt;/a&gt; vs &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/tags/Entity+Framework/default.aspx"&gt;EF&lt;/a&gt;, POCO and Cloud) and gives us more control over how the data is being retrieved and manipulated.&lt;/p&gt;  &lt;p&gt;In this post I’ll introduce the &lt;strong&gt;DomainDataSource&lt;/strong&gt; that is already available as part of &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/tags/.Net+RIA+Services/default.aspx"&gt;.Net RIA Service&lt;/a&gt;, and give a quick walkthrough on how to use it in an ASP.Net Web Forms application.&lt;/p&gt;  &lt;h3&gt;Creating a Data Model and a Domain Service&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 5px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DomainDataSource ASP.Net" border="0" alt="DomainDataSource ASP.Net" align="right" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/UsingDomainDataSourceinASP.Net_118F0/image22_6ae7479b-7429-43f1-9e08-cc10c155727f.png" width="297" height="246" mce_src="http://blogs.microsoft.co.il/blogs/bursteg/image_23CD8F17.png" /&gt;Create a new ASP.Net Web Application in Visual Studio 2008.&lt;/p&gt;  &lt;p&gt;Add a Data Model to your application, whether it is a LINQ to SQL data model, an Entity Framework Data Model, or any other data model. In this sample I am using the &lt;a href="http://blogs.microsoft.co.il/files/folders/88139/download.aspx" mce_href="http://blogs.microsoft.co.il/files/folders/88139/download.aspx"&gt;Bank Schema&lt;/a&gt; with LINQ to SQL.&lt;/p&gt;  &lt;p&gt;Make sure to build the project so that Visual Studio will generate the data classes and data context before the next step.&lt;/p&gt;  &lt;p&gt;Add a new &lt;strong&gt;Domain Service&lt;/strong&gt;. Add a new Item to the server project, and select the &lt;strong&gt;Domain Service&lt;/strong&gt; template in the Web category.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DomainDataSource ASP.Net" border="0" alt="DomainDataSource ASP.Net" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/UsingDomainDataSourceinASP.Net_118F0/image25_d29a1229-0491-4fda-a2e7-6b24a8d5e3b3.png" width="480" height="302" mce_src="http://blogs.microsoft.co.il/blogs/bursteg/image_50D25618.png" /&gt; &lt;/p&gt;  &lt;p&gt;After you add this item, the New &lt;strong&gt;Domain Service&lt;/strong&gt; Class Dialog is shown. Select the Data Context (BankDataContext in this sample), select the entities you want to expose and whether you want to allow editing and click OK.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 30px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DomainDataSource ASP.Net" border="0" alt="DomainDataSource ASP.Net" align="right" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/UsingDomainDataSourceinASP.Net_118F0/image30_8e7baf10-b4f6-4361-b247-b21a871fa386.png" width="290" height="305" mce_src="http://blogs.microsoft.co.il/blogs/bursteg/image_11A0FFF0.png" /&gt; &lt;/p&gt;  &lt;p&gt;This adds the &lt;strong&gt;BankDomainService.cs&lt;/strong&gt; that contains the code that exposes the data to the client, and &lt;strong&gt;BankDomainService.metadata.cs&lt;/strong&gt; that contains additional metadata, mostly for presentation and validation. &lt;/p&gt;  &lt;p&gt;This is how the &lt;strong&gt;DomainService&lt;/strong&gt; looks like when working with LINQ to SQL. If you were working with the Entity Framework, the base class would be different. It simply contains CRUD methods for working with the data context.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;BankDomainService&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;LinqToSqlDomainService&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;BankDataContext&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt;&amp;gt; GetCustomers()&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Context.Customers;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; InsertCustomer(&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt; customer)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Context.Customers.InsertOnSubmit(customer);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; UpdateCustomer(&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt; currentCustomer, &lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt; originalCustomer)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Context.Customers.Attach(currentCustomer, originalCustomer);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DeleteCustomer(&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt; customer)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Context.Customers.Attach(customer, customer);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Context.Customers.DeleteOnSubmit(customer);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;It also adds some new references to &lt;strong&gt;System.ComponentModel.DataAnnotations&lt;/strong&gt;, &lt;strong&gt;System.Web.DomainServices&lt;/strong&gt;, &lt;strong&gt;System.Web.DomainServices.Providers&lt;/strong&gt; and &lt;strong&gt;System.Web.Ria&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;In addition to that, a new Http Handler was added to the web.config file. &lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;httpHandlers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;font size="2"&gt;&amp;#160; ...&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;DataService.axd&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;verb&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;GET,POST&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.Ria.DataServiceFactory, System.Web.Ria,          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;validate&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font size="2"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;httpHandlers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Use the DomainDataSource with ASP.Net&lt;/h3&gt;  &lt;p&gt;In a page of your choice, add a GridView control or any control that can bind to a &lt;strong&gt;DataSourceControl&lt;/strong&gt;.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;GridView&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;GridView&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;GridView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Add a reference to &lt;strong&gt;System.Web.DomainServices.WebControls.dll&lt;/strong&gt;, and in your page, register the prefix for this namespace:&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Register&lt;/span&gt; &lt;span style="color: red"&gt;TagPrefix&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;asp&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;System.Web.DomainServices.WebControls&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Assembly&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;System.Web.DomainServices.WebControls&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Add a &lt;strong&gt;DomainDataSource&lt;/strong&gt; and bind it to the Grid. Notice the in the DomainDataSource declaration I referenced the type of the DomainService with its full namespace, and added which method in it should be used to retrieve data.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;GridView&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;GridView&amp;quot;&lt;/span&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: red"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: red"&gt;DataSourceID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;customersDataSource&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;GridView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DomainDataSource&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;customersDataSource&amp;quot;&lt;/span&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: red"&gt;DomainServiceTypeName&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Samples.Bank.Domain.BankDomainService&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: red"&gt;SelectMethod&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;GetCustomers&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;If you now run the application, you’ll see the grid populated with the results.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ASP. Net DomainDataSource" border="0" alt="ASP. Net DomainDataSource" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/UsingDomainDataSourceinASP.Net_118F0/image_c96762b2-8da5-46a8-966a-6d27122915df.png" width="480" height="283" /&gt; &lt;/p&gt;  &lt;p&gt;With &lt;strong&gt;DomainDataSource&lt;/strong&gt; you get more control on how your data is retrieved and manipulated. You can add your logic to the select method, for example – providing a filter by the authenticated user, and add logic in the update methods, such as adding default values before updating the database.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9545799" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+RIA+Services/default.aspx">.Net RIA Services</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/ASP.Net/default.aspx">ASP.Net</category></item><item><title>Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 2</title><link>http://blogs.msdn.com/bursteg/archive/2009/04/08/build-a-simple-application-with-net-ria-services-silverlight-3-part-2.aspx</link><pubDate>Wed, 08 Apr 2009 10:04:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9537592</guid><dc:creator>Guy Burstein</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bursteg/comments/9537592.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bursteg/commentrss.aspx?PostID=9537592</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bursteg/rsscomments.aspx?PostID=9537592</wfw:comment><description>&lt;h1&gt;Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 2&lt;/h1&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 20px 0px 10px 25px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".Net RIA Services DomainDataSource" border="0" alt=".Net RIA Services DomainDataSource" align="right" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part2_12FE1/silverlight_logo_6f198422-a0f5-49c2-99e7-6f5aed47114c.gif" width="224" height="75" /&gt; This is the second post in a series of posts about building applications with &lt;strong&gt;Microsoft .Net RIA Services&lt;/strong&gt; and &lt;strong&gt;Silverlight 3&lt;/strong&gt;. In &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/04/build-a-simple-application-with-net-ria-services-silverlight-3.aspx"&gt;part 1&lt;/a&gt; of this series I created a new application, created a simple data model and used the &lt;strong&gt;Domain Service&lt;/strong&gt; and &lt;strong&gt;Domain Context&lt;/strong&gt; to retrieve data and bind it to a &lt;strong&gt;DataGrid&lt;/strong&gt;.     &lt;br /&gt;In this post we take it from that step, and replace the manual work with the &lt;strong&gt;DomainDataSource&lt;/strong&gt; that provides some more advanced scenarios.&lt;/p&gt;  &lt;h3&gt;Use a DomainDataSouce to easily connect the data&lt;/h3&gt;  &lt;p&gt;Remove the code that retrieves the data from the server. Open &lt;strong&gt;Views\HomePage.xaml&lt;/strong&gt; and comment out all the code in the &lt;strong&gt;Page_Loaded&lt;/strong&gt; method.&lt;/p&gt;  &lt;p&gt;Instead of loading the data manually, add a &lt;strong&gt;DomainDataSource&lt;/strong&gt; control to the page. To do this, add a reference to &lt;strong&gt;System.Windows.Ria.Controls.dll&lt;/strong&gt;, and add the Xml namespace that relates to its contents:&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;navigation:Page&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;BankApp.HomePage&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; ...        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160; xmlns:ria&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;clr-namespace:System.Windows.Controls;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; assembly=System.Windows.Ria.Controls&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Loaded&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Page_Loaded&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160; Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;HomePage Page&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;        &lt;br /&gt;&amp;#160; ...&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;navigation:Page&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;     &lt;p&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Add the &lt;strong&gt;DomainDataSource&lt;/strong&gt; to the page&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;navigation:Page&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;BankApp.HomePage&lt;/span&gt;&amp;quot;       &lt;br /&gt;&amp;#160; &lt;span style="color: blue"&gt;...&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LayoutRoot&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;White&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;customersDataSource&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;LoadMethodName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;GetCustomers&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;AutoLoad&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;LoadSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;5&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;...&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;navigation:Page&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Reminder&lt;/strong&gt;: After creating the DomainService in the server side, Visual Studio has generated a client side &lt;strong&gt;DomainContext&lt;/strong&gt; that does all the magic of connecting to the server for us.&lt;/p&gt;  &lt;p&gt;Assign the DomainContext to the DomainDataSource so it can use it to pull data from the server. To do that, add a local xml namespace:&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;navigation:Page&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;BankApp.HomePage&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160; xmlns:local&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;clr-namespace:BankApp.Web&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160; Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;HomePage Page&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;navigation:Page&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;     &lt;p&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;And do the assignment:&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;/p&gt;    &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;customersDataSource&lt;/span&gt;&amp;quot;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;LoadMethodName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LoadCustomers&lt;/span&gt;&amp;quot;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;AutoLoad&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;LoadSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;5&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;          &lt;br /&gt;          &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource.DomainContext&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;local:BankDomainContext&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource.DomainContext&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;          &lt;br /&gt;          &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;The last thing we need to do is to bind the &lt;strong&gt;DataGrid&lt;/strong&gt; to the &lt;strong&gt;DomainDataSource&lt;/strong&gt;.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;data&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataGrid&lt;/span&gt;&lt;span style="color: red"&gt; MinHeight&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;dataGrid&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;ItemsSource&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; Data&lt;/span&gt;&lt;span style="color: blue"&gt;,&lt;/span&gt;&lt;span style="color: red"&gt; ElementName&lt;/span&gt;&lt;span style="color: blue"&gt;=customersDataSource}&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;data&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataGrid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Run the application, and see how the data is being loaded in chunks according to the LoadSize property of the &lt;strong&gt;DomainDataSource&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;Add a &lt;strong&gt;DataPager &lt;/strong&gt;Control to enable paging through the data. To do that, add a reference to &lt;strong&gt;System.Windows.Controls.Data.DataForm.dll&lt;/strong&gt; the following xml namespace:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;xmlns:dataControls=      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;quot;clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm”&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Add the &lt;strong&gt;DataPager&lt;/strong&gt; control and bind it to the &lt;strong&gt;DomainDataSource:&lt;/strong&gt;&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;data:DataGrid&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;MinHeight&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;200&lt;/span&gt;&amp;quot; ...&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;data:DataGrid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;dataControls:DataPager&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;PageSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;3&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;{Binding Data, ElementName=customersDataSource}&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;If you now run the application, you should get a result similar to this:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DomainDataSource DataGrid DataPager" border="0" alt="DomainDataSource DataGrid DataPager" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part2_12FE1/image_80861ee0-6f9d-42e5-b641-833c381d6062.png" width="640" height="427" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Data Grouping&lt;/h3&gt;  &lt;p&gt;Add Grouping support to the &lt;strong&gt;DataGrid&lt;/strong&gt;. Add the following xml namespace:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;xmlns:riaData=&amp;quot;clr-namespace:System.Windows.Data;assembly=System.Windows.Ria.Controls&amp;quot;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Then, add a group descriptor to group the results by the property &lt;strong&gt;City&lt;/strong&gt;.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource &lt;/span&gt;&lt;span style="color: blue"&gt;...&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource.GroupDescriptors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;riaData:GroupDescriptor&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;PropertyPath&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;City&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource.GroupDescriptors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;The result should look like this:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DataGrid DomainDataSource Grouping GroupDescriptor" border="0" alt="DataGrid DomainDataSource Grouping GroupDescriptor" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part2_12FE1/image_de131632-0385-4beb-b96b-abf2584543aa.png" width="640" height="427" /&gt;&lt;/p&gt;  &lt;h3&gt;Data Sorting&lt;/h3&gt;  &lt;p&gt;To add sorting support, add a &lt;strong&gt;SortDescriptor:&lt;/strong&gt;&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt; ...&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource.SortDescriptors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;riaData:SortDescriptor&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;PropertyPath&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;CustomerID&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Direction&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Descending&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource.SortDescriptors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Rich Data Filtering&lt;/h3&gt;  &lt;p&gt;Add a dynamic filtering support based on a selected value of a &lt;strong&gt;CheckBox&lt;/strong&gt;. Add a Checkbox above the &lt;strong&gt;DataGrid&lt;/strong&gt;.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CheckBox&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;chkBusiness&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Business Customer ?&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;data:DataGrid&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;dataGrid&lt;/span&gt;&amp;quot; ...&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;data:DataGrid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Add a &lt;strong&gt;FilterDescriptor&lt;/strong&gt; that filters data according to the &lt;strong&gt;IsBusiness&lt;/strong&gt; property of each item. Bind the &lt;strong&gt;FilterDescriptor&lt;/strong&gt;&amp;#160; to the &lt;strong&gt;IsChecked&lt;/strong&gt; property of the above checkbox.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;customersDataSource&lt;/span&gt;&amp;quot; ... &lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&lt;span style="color: blue"&gt;...          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource.FilterDescriptors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;riaData:FilterDescriptorCollection&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;riaData:FilterDescriptor&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;PropertyPath&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;IsBusiness&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Operator&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;IsEqualTo&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;riaData:ControlParameter&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ControlName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;chkBusiness&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;PropertyName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;IsChecked&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;RefreshEventName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Click&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;riaData:FilterDescriptor&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;riaData:FilterDescriptorCollection&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource.FilterDescriptors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ria:DomainDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Run the application, check and uncheck the checkbox, and see how the data is refreshed accordingly.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="FilterDescriptors DomainDataSource" border="0" alt="FilterDescriptors DomainDataSource" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/BuildaSi.NetRIAServicesSilverlight3Part2_12FE1/image_d779c8d5-18b5-4871-b721-34fab53cf7e4.png" width="640" height="427" /&gt; &lt;/p&gt;  &lt;h3&gt;Conclusion&lt;/h3&gt;  &lt;p&gt;In this post we took on from where we left at &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/04/04/build-a-simple-application-with-net-ria-services-silverlight-3.aspx"&gt;Part 1&lt;/a&gt; , and replaced the manual work needed to get the data from the server with the &lt;strong&gt;DomainDataSource&lt;/strong&gt; that provides some more advanced scenarios. In the next post we’ll introduce the DataForm control and talk more about data validation.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9537592" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bursteg/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+RIA+Services/default.aspx">.Net RIA Services</category></item><item><title>Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 1</title><link>http://blogs.msdn.com/bursteg/archive/2009/04/04/build-a-simple-application-with-net-ria-services-silverlight-3-part-1.aspx</link><pubDate>Sat, 04 Apr 2009 20:28:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9531479</guid><dc:creator>Guy Burstein</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/bursteg/comments/9531479.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bursteg/commentrss.aspx?PostID=9531479</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bursteg/rsscomments.aspx?PostID=9531479</wfw:comment><description>&lt;h1&gt;Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 1&lt;/h1&gt;  &lt;p&gt;This is the first post in a series of posts about building applications with &lt;strong&gt;Microsoft .Net RIA Services&lt;/strong&gt; and &lt;strong&gt;Silverlight 3&lt;/strong&gt;. In this post I will create a new application, create a simple data model and use the &lt;strong&gt;Domain Service&lt;/strong&gt; and &lt;strong&gt;Domain Context&lt;/strong&gt; to retrieve data and bind it to a DataGrid.&lt;/p&gt;  &lt;p&gt;Before you start, make sure you have &lt;a href="http://silverlight.net/getstarted/silverlight3/default.aspx"&gt;Silverlight 3 Beta&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce"&gt;.NET RIA Services March 2009 Preview&lt;/a&gt; installed, and you have already installed and configured SQL Server. In this sample I am using the &lt;a href="http://blogs.microsoft.co.il/files/folders/88139/download.aspx"&gt;Bank Schema&lt;/a&gt; I’ve used in the past.&lt;/p&gt;  &lt;h3&gt;Create a Silverlight Navigation Application&lt;/h3&gt;  &lt;p&gt;Create a new &lt;strong&gt;Silverlight Navigation Application&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Walkthrough .Net RIA Services Silverlight 3" border="0" alt="Walkthrough .Net RIA Services Silverlight 3" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/WalkthroughBu.NetRIAServicesSilverlight3_F5ED/image_3.png" width="480" height="356" /&gt; &lt;/p&gt;  &lt;p&gt;After you click OK, the New Silverlight Application Dialog is shown. Click OK again to create an ASP.Net project that links to the new Silverlight Application.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Walkthrough .Net RIA Services Silverlight 3" border="0" alt="Walkthrough .Net RIA Services Silverlight 3" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/WalkthroughBu.NetRIAServicesSilverlight3_F5ED/image_1f35ef45-944a-478c-97ed-78568031a111.png" width="320" height="283" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A new solution is created. Notice the new assemblies that the Silverlight project is referencing, and notice the new assemblies among them.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Walkthrough .Net RIA Services Silverlight 3" border="0" alt="Walkthrough .Net RIA Services Silverlight 3" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/WalkthroughBu.NetRIAServicesSilverlight3_F5ED/image_ae481939-5e56-4328-9e35-fd104cc273ab.png" width="211" height="188" /&gt; &lt;/p&gt;  &lt;h3&gt;Build a Domain Service&lt;/h3&gt;  &lt;p&gt;Add a new Data Model to your server side project (BankApp.Web). This data model can be a LINQ to SQL model, an Entity Data Model, or you can use any other business object representation.&lt;/p&gt;  &lt;p&gt;In this sample I am using a LINQ to SQL data model based on the &lt;a href="http://blogs.microsoft.co.il/files/folders/88139/download.aspx"&gt;Bank Schema&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Walkthrough .Net RIA Services Silverlight 3" border="0" alt="Walkthrough .Net RIA Services Silverlight 3" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/WalkthroughBu.NetRIAServicesSilverlight3_F5ED/image_c39ee537-e984-4571-bb6a-dedde531dbb6.png" width="378" height="313" /&gt; &lt;/p&gt;  &lt;p&gt;Make sure to build the project so that Visual Studio will generate the data classes and data context before the next step.&lt;/p&gt;  &lt;p&gt;Add a new &lt;strong&gt;Domain Service&lt;/strong&gt;. Add a new Item to the server project, and select the &lt;strong&gt;Domain Service&lt;/strong&gt; template in the Web category.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Walkthrough .Net RIA Services Silverlight 3" border="0" alt="Walkthrough .Net RIA Services Silverlight 3" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/WalkthroughBu.NetRIAServicesSilverlight3_F5ED/image_cb5b7807-7737-4c88-acbc-a6d8bd15baf2.png" width="480" height="302" /&gt; &lt;/p&gt;  &lt;p&gt;After you add this item, the New &lt;strong&gt;Domain Service&lt;/strong&gt; Class Dialog is shown. Select the Data Context (BankDataContext in this sample), select the entities you want to expose and whether you want to allow editing and click OK.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Walkthrough .Net RIA Services Silverlight 3" border="0" alt="Walkthrough .Net RIA Services Silverlight 3" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/WalkthroughBu.NetRIAServicesSilverlight3_F5ED/image_dcae8e76-822f-440a-96b2-bd2037931afe.png" width="324" height="341" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Walkthrough .Net RIA Services Silverlight 3" border="0" alt="Walkthrough .Net RIA Services Silverlight 3" align="right" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/WalkthroughBu.NetRIAServicesSilverlight3_F5ED/image_4a59bb46-cfc5-4cdc-abd4-2c86a525c28d.png" width="228" height="269" /&gt;This adds the &lt;strong&gt;BankDomainService.cs&lt;/strong&gt; that contains the code that exposes the data to the client, and &lt;strong&gt;BankDomainService.metadata.cs&lt;/strong&gt; that contains additional metadata, mostly for presentation and validation. &lt;/p&gt;  &lt;p&gt;A few references were also added: &lt;strong&gt;System.ComponentModel.DataAnnotations&lt;/strong&gt;, &lt;strong&gt;System.Web.DomainServices&lt;/strong&gt;, &lt;strong&gt;System.Web.DomainServices.Providers&lt;/strong&gt; and &lt;strong&gt;System.Web.Ria&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;In addition to that, a new Http Handler was added to the web.config file. &lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;httpHandlers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; ...&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;DataService.axd&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;verb&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;GET,POST&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.Ria.DataServiceFactory, System.Web.Ria, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;validate&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;httpHandlers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Walkthrough .Net RIA Services Silverlight 3" border="0" alt="Walkthrough .Net RIA Services Silverlight 3" align="right" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/WalkthroughBu.NetRIAServicesSilverlight3_F5ED/image_3e036457-564f-4fdc-a972-a5654226d02b.png" width="155" height="178" /&gt;Build the solution. This executes a build target the generates the client side code that is required in order to consume the Domain Service. If you click the Show All Files button for the client application, you’ll notice the generated code.&lt;/p&gt;  &lt;h3&gt;Display Domain Data in the Application&lt;/h3&gt;  &lt;p&gt;Add a DataGrid Control to the client application. To do that, add a reference to &lt;strong&gt;System.Windows.Controls.Data.dll&lt;/strong&gt; that contains the DataGrid Control.&lt;/p&gt;  &lt;p&gt;Then, open the &lt;strong&gt;Views\AboutPage.xaml&lt;/strong&gt; and add an xmlns prefix to the CLR namespace of the DatGrid.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;navigation:Page&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;BankApp.HomePage&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;...        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns:data&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;clr-namespace:System.Windows.Controls;        &lt;br /&gt;assembly=System.Windows.Controls.Data&lt;/span&gt;&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;...        &lt;br /&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Add the Xaml markup for the DataGrid Control:&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;     &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LayoutRoot&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;White&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; ...&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;{StaticResource ContentTextPanelStyle}&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; ...&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;data:DataGrid&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;MinHeight&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;200&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;dataGrid&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;data:DataGrid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Handle the Loaded Event of the Page. First, Add a method to handle the &lt;strong&gt;Loaded&lt;/strong&gt; event of the page.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;navigation:Page&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;BankApp.HomePage&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;...        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; Loaded&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Page_Loaded&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;HomePage Page&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In the method that handles the event, use the client &lt;strong&gt;Domain Context&lt;/strong&gt; to retrieve data from the service and bind to the DataGrid.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: #2b91af"&gt;BankDomainContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;BankDomainContext&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.dataGrid.ItemsSource = context.Customers;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160; context.LoadCustomers();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Now, run the application and let it go and retreive the data and present it in the DataGrid.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Walkthrough .Net RIA Services Silverlight 3" border="0" alt="Walkthrough .Net RIA Services Silverlight 3" src="http://blogs.msdn.com/blogfiles/bursteg/WindowsLiveWriter/WalkthroughBu.NetRIAServicesSilverlight3_F5ED/image_f334a64d-c488-4e7a-a2dc-ab7cd9387cbb.png" width="480" height="341" /&gt; &lt;/p&gt;  &lt;p&gt;In this post I created a new application, created a simple data model and used the &lt;strong&gt;Domain Service&lt;/strong&gt; and &lt;strong&gt;Domain Context&lt;/strong&gt; to retrieve data and bind it to a DataGrid. In the next post I’ll explore more controls that ship with the &lt;strong&gt;.Net RIA Services.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9531479" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bursteg/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/bursteg/archive/tags/.Net+RIA+Services/default.aspx">.Net RIA Services</category></item></channel></rss>