<?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>WCF Data Services Team Blog</title><link>http://blogs.msdn.com/b/astoriateam/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>WCF Data Services 5.0.1 Released</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/05/18/wcf-data-services-5-0-1-released.aspx</link><pubDate>Fri, 18 May 2012 23:42:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10307068</guid><dc:creator>dpblogs</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10307068</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/05/18/wcf-data-services-5-0-1-released.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;We have just pushed the official bits for 5.0.1 to NuGet and should be releasing an updated MSI sometime within the next week.&lt;/strong&gt; Thanks to feedback from the community we found and fixed several bugs, detailed below.&lt;/p&gt;  &lt;h3&gt;NuGet Links&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.nuget.org/packages/Microsoft.Data.Services"&gt;http://www.nuget.org/packages/Microsoft.Data.Services&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.nuget.org/packages/Microsoft.Data.Services.Client" href="http://www.nuget.org/packages/Microsoft.Data.Services.Client"&gt;http://www.nuget.org/packages/Microsoft.Data.Services.Client&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.nuget.org/packages/Microsoft.Data.OData"&gt;http://www.nuget.org/packages/Microsoft.Data.OData&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.nuget.org/packages/Microsoft.Data.Edm"&gt;http://www.nuget.org/packages/Microsoft.Data.Edm&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.nuget.org/packages/System.Spatial"&gt;http://www.nuget.org/packages/System.Spatial&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Release Notes&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Added configuration setting to ODataLib to allow users to intercept the XML reader before ODataLib processes the payload&lt;/li&gt;    &lt;li&gt;Fixes bug where DateTime values do not roundtrip properly in JSON verbose&lt;/li&gt;    &lt;li&gt;Fixes bug where $metadata requests fail on services with both actions and service operations&lt;/li&gt;    &lt;li&gt;Fixes bug where $expand requests fail on Oracle providers&lt;/li&gt;    &lt;li&gt;Fixes bug where vocabulary annotations in an external annotations file fail to resolve the target&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;What does the MSI do?&lt;/h3&gt;  &lt;p&gt;All of the fixes detailed above are in the NuGet bits. There is one additional fix in the MSI for code generation against services that have multiple overloads for a function import. &lt;strong&gt;One important nuance of the MSI is that it removes the WCF Data Services DLLs from the GAC.&lt;/strong&gt; (The 5.0.1 MSI is an upgrade to the 5.0 MSI, which means that the 5.0 MSI gets uninstalled and its install actions – including the GACing of the DLLs – are reversed.) We have &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/05/07/wcf-data-services-now-with-more-releases.aspx" target="_blank"&gt;blogged previously&lt;/a&gt; about leaving the GAC.&lt;/p&gt;  &lt;h3&gt;Where should the MSI be installed?&lt;/h3&gt;  &lt;p&gt;The MSI should only be installed on development machines as it solely contains tooling fixes. If the MSI is installed on a production Web server running a WCF Data Services 5.0.0 service that was not bin deployed, the service may stop functioning.&lt;/p&gt;  &lt;h3&gt;Feedback Please&lt;/h3&gt;  &lt;p&gt;As we begin to release more quickly and issue more prereleases, your feedback is critical to the process. Please leave your comments and thoughts below.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10307068" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/OData/">OData</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/WCF+Data+Services/">WCF Data Services</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Release/">Release</category></item><item><title>WCF Data Services EULAs updated</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/05/17/wcf-data-services-eulas-updated.aspx</link><pubDate>Fri, 18 May 2012 00:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10306519</guid><dc:creator>dpblogs</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10306519</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/05/17/wcf-data-services-eulas-updated.aspx#comments</comments><description>&lt;p&gt;Today we are releasing an updated EULA for WCF Data Services. Effective as of WCF Data Services 5.0.1, the DLLs that constitute the runtime components of WCF Data Services are now officially redistributable. Please see the attached EULAs for more details.&lt;/p&gt;  &lt;p&gt;Please leave your thoughts and comments below.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10306519" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-30-65-19/WCF-Data-Services-EULAs.zip" length="202898" type="application/zip" /><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/WCF+Data+Services/">WCF Data Services</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Release/">Release</category></item><item><title>NuGet and Bin Deploy</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/05/17/nuget-and-bin-deploy.aspx</link><pubDate>Thu, 17 May 2012 23:06:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10306503</guid><dc:creator>dpblogs</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10306503</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/05/17/nuget-and-bin-deploy.aspx#comments</comments><description>&lt;p&gt;We recently posted about &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/05/07/wcf-data-services-now-with-more-releases.aspx" target="_blank"&gt;trying to release WCF Data Services more frequently, and some of the changes we’re making&lt;/a&gt;. In this post, we’ll take a slightly deeper look at NuGet,bin deploy, and where WCF Data Services is headed.&lt;/p&gt;  &lt;h3&gt;Managing dependencies with NuGet&lt;/h3&gt;  &lt;p&gt;If you’re already familiar with NuGet, you probably understand its value proposition and can skip ahead to bin deploying applications. If you haven’t used NuGet before, this section will provide you with a quick introduction. The NuGet site has a great &lt;a href="http://docs.nuget.org/" target="_blank"&gt;documentation section&lt;/a&gt; that provides significantly more detail.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What is NuGet?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Languages such as Ruby and Python have package management systems that make it trivial to take a dependency on a centrally published package. NuGet provides similar functionality&amp;#160; for .NET. With a few &lt;a href="http://docs.nuget.org/docs/start-here/managing-nuget-packages-using-the-dialog#Installing_a_Package" target="_blank"&gt;clicks&lt;/a&gt; or a simple &lt;a href="http://docs.nuget.org/docs/start-here/using-the-package-manager-console#Installing_a_Package" target="_blank"&gt;command&lt;/a&gt; a developer can take a dependency on &lt;a href="http://www.nuget.org/packages/Microsoft.Data.Services.Client/" target="_blank"&gt;Microsoft.Data.Services.Client&lt;/a&gt;, the assembly that provides WCF Data Services client functionality. Taking a dependency on that package adds three other packages to your project: &lt;a href="http://www.nuget.org/packages/Microsoft.Data.OData/" target="_blank"&gt;Microsoft.Data.OData&lt;/a&gt;, &lt;a href="http://www.nuget.org/packages/Microsoft.Data.Edm/" target="_blank"&gt;Microsoft.Data.Edm&lt;/a&gt; and &lt;a href="http://www.nuget.org/packages/System.Spatial/" target="_blank"&gt;System.Spatial&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Getting a specific version of WCF Data Services is also very easy: issuing the command &lt;code&gt;Install-Package Microsoft.Data.Services.Client –Version 5.0.1&lt;/code&gt; will install version 5.0.1 of the client, even if there is a more recent version of the client published. (Issuing the command &lt;code&gt;Install-Package Microsoft.Data.Services.Client&lt;/code&gt; or installing the package with the explorer will always get the most recent version of the client.)&lt;/p&gt;  &lt;p&gt;Installation experience with Manage NuGet Packages dialog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/5270.image_5F00_0851D434.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/8816.image_5F00_thumb_5F00_5D0D3D2C.png" width="644" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/0576.image_5F00_55EE00B4.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/1157.image_5F00_thumb_5F00_63C046AF.png" width="400" height="452" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/4784.image_5F00_71928CAA.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/8507.image_5F00_thumb_5F00_036F2078.png" width="644" height="91" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Installation experience with Package Manager Console:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/4300.image_5F00_0617DC29.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/5751.image_5F00_thumb_5F00_45E1C2AE.png" width="644" height="393" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Sample installation commands:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;code&gt;Install-Package Microsoft.Data.Services.Client&lt;/code&gt;: Installs the most recent released version of the WCF Data Services client.&lt;/li&gt;    &lt;li&gt;&lt;code&gt;Install-Package Microsoft.Data.Services.Client –Pre&lt;/code&gt;: Installs the most recent version of the WCF Data Services client (including &lt;a href="http://docs.nuget.org/docs/reference/versioning#Prerelease_Versions" target="_blank"&gt;prereleases&lt;/a&gt;).&lt;/li&gt;    &lt;li&gt;&lt;code&gt;Install-Package Microsoft.Data.Services.Client –Version 5.0.0.50403&lt;/code&gt;: Installs an explicit version of WCF Data Services client, ignoring more recent versions.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Updating Packages with NuGet&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In addition to the simple installation process, NuGet makes it easy to update packages.&lt;/p&gt;  &lt;p&gt;Update experience with Manage NuGet Packages dialog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/0564.image_5F00_7A821EE9.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/2543.image_5F00_thumb_5F00_2150352A.png" width="644" height="213" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Update experience with Package Manager Console:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/2627.image_5F00_611A1BAF.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/8507.image_5F00_thumb_5F00_72F6AF7C.png" width="644" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Sample update commands:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;code&gt;Update-Package&lt;/code&gt;: Updates all packages to their most recently released version.&lt;/li&gt;    &lt;li&gt;&lt;code&gt;Update-Package –Pre&lt;/code&gt;: Updates all packages to their most recent versions (including &lt;a href="http://docs.nuget.org/docs/reference/versioning#Prerelease_Versions" target="_blank"&gt;prereleases&lt;/a&gt;).&lt;/li&gt;    &lt;li&gt;&lt;code&gt;Update-Package Microsoft.Data.Services.Client&lt;/code&gt;: Updates the Microsoft.Data.Services.Client package to its most recently released version, including any dependency updates required by the Microsoft.Data.Services.Client package.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Simplified Dependency Management&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In summary, NuGet greatly simplifies the process of locating, downloading, and adding references to the most recent version of WCF Data Services. Developers no longer need to search the Download Center for a version of WCF Data Services, sort by date, download and install an MSI, manually copy the DLLs and add a reference to them, etc. With NuGet developers simply use the Manage NuGet Packages dialog or the Package Manager Console to easily take a dependency on WCF Data Services.&lt;/p&gt;  &lt;h3&gt;Bin Deploying Applications&lt;/h3&gt;  &lt;p&gt;Bin deployment is a term commonly used for a deployment process wherein the contents of the bin folder (potentially with a few other files) are copied to a server using a very simple file copy or similar process. In other words, bin deploy scenarios do not require an MSI to be run on the server that will host the application. This is especially key in scenarios where the server is not controlled by the developer (e.g., Web hosting). However, bin deploy is also beneficial in many other scenarios. Some of the benefits of bin deploy are as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Simple file copy deployment using SMB, FTP, or some similar alternative.&lt;/li&gt;    &lt;li&gt;Assemblies can be configured to run in medium trust (GACed assemblies always run in full trust).&lt;/li&gt;    &lt;li&gt;No need to have an operations team run an MSI to get the latest version of an assembly.&lt;/li&gt;    &lt;li&gt;Easier to automate deployments.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Bin deployment is also a natural companion for NuGet, semantic versioning, and our amended EULA for the imminent 5.0.1 version of WCF Data Services, which will include a redistribution clause.&lt;/p&gt;  &lt;h3&gt;A Glimpse Into the Future&lt;/h3&gt;  &lt;p&gt;Down the road, we will be taking a much deeper dependency on NuGet – we are currently revamping our tooling to install NuGet packages when you add a WCF Data Service or a reference to an OData service to your application.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thoughts? Comments? We’d love to hear from you!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10306503" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/WCF+Data+Services/">WCF Data Services</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/NuGet/">NuGet</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Deployment/">Deployment</category></item><item><title>WCF Data Services, now with more releases!</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/05/07/wcf-data-services-now-with-more-releases.aspx</link><pubDate>Tue, 08 May 2012 02:01:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10302042</guid><dc:creator>dpblogs</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10302042</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/05/07/wcf-data-services-now-with-more-releases.aspx#comments</comments><description>&lt;p&gt;Like &lt;a href="http://blogs.msdn.com/b/adonet/archive/2011/08/09/ef-releases-amp-versioning-call-for-feedback.aspx" target="_blank"&gt;other teams&lt;/a&gt; at Microsoft, WCF Data Services has been working toward a goal of more frequent releases. We released &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/09/wcf-data-services-5-0-rtm-release.aspx" target="_blank"&gt;5.0&lt;/a&gt; on April 9 and we &lt;a href="http://docs.nuget.org/docs/Reference/Versioning#Prerelease_Versions" target="_blank"&gt;pre-released&lt;/a&gt; &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/20/wcf-data-services-5-1-0-rc-prerelease.aspx" target="_blank"&gt;WCF Data Services 5.0.1-rc* on April 20&lt;/a&gt; (we’ll release the final version of &lt;code&gt;5.0.1&lt;/code&gt; very soon). The rapid release was possible because of three changes we’re making. First up, we’re…&lt;/p&gt;  &lt;h3&gt;Adopting semantic versioning&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.semver.org" target="_blank"&gt;Semantic versioning&lt;/a&gt; is a growing movement that proposes a solution to confusing version numbers. Let’s see how semantic versioning applies to the pre-release: &lt;code&gt;5.0.1-rc&lt;/code&gt;.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The first digit is the major version. Semantic versioning states that the major version should be bumped only when there are breaking changes in a public API. &lt;/li&gt;    &lt;li&gt;The second digit is the minor version. Semantic versioning asserts that the minor version should be bumped when new functionality is introduced to the public API. &lt;/li&gt;    &lt;li&gt;The third digit is the patch version. Semantic versioning says that the patch version should be bumped for bug fixes that do not affect the public API. &lt;/li&gt;    &lt;li&gt;The hypenated string is the pre-release version. Semantic versioning claims that the pre-release version should be appended to anything that is not a release.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Since &lt;code&gt;5.0.1&lt;/code&gt; only contains bug fixes, we bumped only the third digit of the version number. The prerelease that went out on April 20 was suffixed with &lt;code&gt;-rc&lt;/code&gt; to indicate that the bits are not yet release quality.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;* Note:&lt;/strong&gt; When we initially pushed out the prerelease, we thought we would need the minor version increment. This turned out not to be the case, so we fixed the version number to be the correct value according to semantic versioning. We hid the &lt;code&gt;5.1.0-rc&lt;/code&gt; prerelease today, replaced it with &lt;code&gt;5.0.1-rc&lt;/code&gt; and will release the final bits as &lt;code&gt;5.0.1&lt;/code&gt;. If you have installed &lt;code&gt;5.1.0-rc&lt;/code&gt;, you’ll need to uninstall that package before you can install &lt;code&gt;5.0.1-rc&lt;/code&gt; or &lt;code&gt;5.0.1&lt;/code&gt;.&lt;/p&gt;  &lt;p&gt;Moving to semantic versioning facilitates our decision to…&lt;/p&gt;  &lt;h3&gt;Distribute new releases via NuGet&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://nuget.org/" target="_blank"&gt;NuGet&lt;/a&gt; is a fantastic binary distribution system for a number of reasons. NuGet enables us to release more frequently without causing additional confusion – the version history on the package page clearly displays the versions that have been released:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/5327.image_5F00_5357C11B.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/5811.image_5F00_thumb_5F00_2BB66653.png" width="593" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;NuGet also makes it easy to take a dependency on a particular version of an assembly with commands like &lt;code&gt;Install-Package Microsoft.Data.Services.Client –Version 5.0.1&lt;/code&gt;. Furthermore, NuGet makes it very easy to recognize prereleases and even provides a special version of the command line that support prerelease versions:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/3771.image_5F00_32696FD6.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/3364.image_5F00_thumb_5F00_2020A914.png" width="761" height="330" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;NuGet also makes it easier for us to achieve a third goal…&lt;/p&gt;  &lt;h3&gt;Changing to a “bin deploy” model&lt;/h3&gt;  &lt;p&gt;If you’re not familiar with the term, a bin deploy model is one in which you simply copy the contents of the bin directory to the target location – there are no MSIs involved, no GAC – just DLLs and your preferred file transfer mechanism.&lt;/p&gt;  &lt;p&gt;There are many reasons to move to a bin deploy model. Two of the more obvious reasons are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A bin deploy model simplifies deployment and increases the number of potential deployment targets. You don’t need your Web server to run a particular MSI that puts the appropriate assemblies into the GAC. This opens up a whole host of scenarios, including deploying OData services to hosting providers that won’t run the WCF Data Services MSI. It also increases confidence that when an application is deployed, it has all of its dependencies readily available. &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;A bin deploy model allows &lt;a href="http://msdn.microsoft.com/en-us/library/dd984947.aspx" target="_blank"&gt;trust levels that are commonly leveraged by hosting providers&lt;/a&gt;.&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;We’ll be writing more about NuGet and bin deploy in the near future, but for now we would love to hear your…&lt;/p&gt;  &lt;h3&gt;Feedback please!&lt;/h3&gt;  &lt;p&gt;We’d love to hear what you think about 5.0.0, our more frequent releases, and our changes to distribution/deployment. Feel free to leave a comment below!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10302042" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Versioning/">Versioning</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/WCF+Data+Services/">WCF Data Services</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/OData+V3/">OData V3</category></item><item><title>Metro OData prerelease bits and app</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/04/26/metro-odata-prerelease-bits-and-app.aspx</link><pubDate>Thu, 26 Apr 2012 17:45:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10298157</guid><dc:creator>dpblogs</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10298157</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/04/26/metro-odata-prerelease-bits-and-app.aspx#comments</comments><description>&lt;p&gt;Phani just published a blog post with directions on how to build OData apps for Windows 8 Metro. The Metro bits are still very much in a prerelease form (e.g., you’ll have to invoke codegen with a command line tool) but it should enable developers to start trying out OData on Metro. For the blog post as well as sample bits and the sample app, check out Phani’s blog: &lt;a href="http://blogs.msdn.com/b/phaniraj/archive/2012/04/26/developing-windows-8-metro-style-applications-that-consume-odata.aspx"&gt;http://blogs.msdn.com/b/phaniraj/archive/2012/04/26/developing-windows-8-metro-style-applications-that-consume-odata.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Have fun, and please feel free to provide feedback below.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10298157" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/OData+V3/">OData V3</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Metro/">Metro</category></item><item><title>WCF Data Services 5.1.0-rc Prerelease</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/04/20/wcf-data-services-5-1-0-rc-prerelease.aspx</link><pubDate>Fri, 20 Apr 2012 23:25:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10295995</guid><dc:creator>dpblogs</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10295995</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/04/20/wcf-data-services-5-1-0-rc-prerelease.aspx#comments</comments><description>&lt;p&gt;Less than two weeks ago, we released &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/09/wcf-data-services-5-0-rtm-release.aspx"&gt;WCF Data Services 5.0.0&lt;/a&gt;. Today, we are releasing 5.1.0-rc as a NuGet prerelease.&lt;/p&gt;  &lt;h3&gt;What is in the prerelease&lt;/h3&gt;  &lt;p&gt;This prerelease contains several bug fixes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en/adodotnetdataservices/thread/e74ea4d1-a262-4326-8529-c146a3acfb6d"&gt;WCF Data Services fails to work properly with the $expand query option when using the DevArt Oracle EF provider&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/10111343/odata-library-rtm-datetime-inconsistencies"&gt;Some DateTime values do not round-trip properly in JSON verbose&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Incorrect metadata version calculation on a V3 service with both service operations and actions&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Getting the prerelease&lt;/h3&gt;  &lt;p&gt;The prerelease is only available on NuGet and must be installed using the prerelease cmdlet. &lt;a href="http://docs.nuget.org/docs/reference/versioning#Installing_Prerelease_Packages"&gt;Prereleases are not displayed in the Manage NuGet Packages dialog&lt;/a&gt;. To install this prerelease NuGet package, you can use one of the following commands in the Package Manager Console:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Install-Package &amp;lt;PackageId&amp;gt; –Pre&lt;/li&gt;    &lt;li&gt;Update-Package &amp;lt;PackageId&amp;gt; –Pre&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Our NuGet package ids are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://nuget.org/packages/Microsoft.Data.Services.Client"&gt;Microsoft.Data.Services.Client&lt;/a&gt; (WCF Data Services Client)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://nuget.org/packages/Microsoft.Data.Services"&gt;Microsoft.Data.Services&lt;/a&gt; (WCF Data Services Server)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://nuget.org/packages/Microsoft.Data.OData"&gt;Microsoft.Data.OData&lt;/a&gt; (ODataLib)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://nuget.org/packages/Microsoft.Data.Edm"&gt;Microsoft.Data.Edm&lt;/a&gt; (EdmLib)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://nuget.org/packages/System.Spatial"&gt;System.Spatial&lt;/a&gt; (System.Spatial)&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Call to action&lt;/h3&gt;  &lt;p&gt;If you have experienced one of the bugs mentioned above, we encourage you to try out the prerelease bits in a preproduction environment. As always, we’d love to hear any feedback you have!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10295995" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/OData/">OData</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/WCF+Data+Services/">WCF Data Services</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Prerelease/">Prerelease</category></item><item><title>JSON Light Sample Payloads</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/04/17/json-light-sample-payloads.aspx</link><pubDate>Tue, 17 Apr 2012 23:33:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10294743</guid><dc:creator>dpblogs</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10294743</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/04/17/json-light-sample-payloads.aspx#comments</comments><description>&lt;p&gt;We recently put together a document that contains some of our thinking about JSON light as well as a whole slew of sample payloads. We would love to hear any feedback you have on the format; you can comment in the accompanying OneNote.&lt;/p&gt;  &lt;p&gt;We will be accepting public feedback on JSON light until May 4, 2012. We will also provide a preview release of the JSON light bits via NuGet for interested parties.&lt;/p&gt;  &lt;p&gt;JSON light at-a-glance: &lt;a title="https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;amp;resid=D23ED2816DEEA7B!966&amp;amp;parid=D23ED2816DEEA7B!106&amp;amp;authkey=!AAYCE2RUJccjhHk" href="https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;amp;resid=D23ED2816DEEA7B!966&amp;amp;parid=D23ED2816DEEA7B!106&amp;amp;authkey=!AAYCE2RUJccjhHk"&gt;https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;amp;resid=D23ED2816DEEA7B!966&amp;amp;parid=D23ED2816DEEA7B!106&amp;amp;authkey=!AAYCE2RUJccjhHk&lt;/a&gt;    &lt;br /&gt;Discussion: &lt;a href="https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;amp;page=view&amp;amp;resid=D23ED2816DEEA7B!967&amp;amp;parid=D23ED2816DEEA7B!106&amp;amp;authkey=!ABdrv3heWfQFY4Y"&gt;https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;amp;page=view&amp;amp;resid=D23ED2816DEEA7B!967&amp;amp;parid=D23ED2816DEEA7B!106&amp;amp;authkey=!ABdrv3heWfQFY4Y&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10294743" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Design+Notes/">Design Notes</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/OData+V3/">OData V3</category></item><item><title>How to use WCF DS 5.0 in a Web Site project</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/04/17/how-to-use-wcf-ds-5-0-in-a-web-site-project.aspx</link><pubDate>Tue, 17 Apr 2012 17:45:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10294589</guid><dc:creator>dpblogs</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10294589</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/04/17/how-to-use-wcf-ds-5-0-in-a-web-site-project.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=29306"&gt;WCF Data Services 5.0 RTM&lt;/a&gt; release includes an update to the Add Service Reference behavior in Visual Studio. For most project types that target .NET Framework 4.0, this means that when you add a new service reference, you will automatically get assembly references to the new client assemblies, and your client will be able to communicate with servers that support v3 of the OData protocol.&lt;/p&gt;  &lt;p&gt;This does not happen by default for Web Site Projects, but there are some manual steps you can take to update these projects to use the new functionality. This applies to Web Site Projects only, not Web Application Projects or any other type of project with support for WCF Data Services.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Configuring a Web Site Project to work with WCF Data Services 5.0:&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;p&gt;Add a Service Reference in the Web Site project.&lt;/p&gt;      &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb628652.aspx"&gt;How to: Add, Update, or Remove a Service Reference&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;This will add the service reference with assembly references to the WCF Data Services client that is included with .NET Framework 4.0, and not the updated version that is included with the 5.0 RTM release.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Update the project’s assembly references to point to the new client.&lt;/p&gt;      &lt;p&gt;There are three ways to do this:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;p&gt;&lt;b&gt;(Recommended)&lt;/b&gt; Use NuGet to install the &lt;code&gt;Microsoft.Data.Services.Client&lt;/code&gt; package. Click the Tools menu, then Library Package Manager, then Package Manager Console. In the console, type &lt;code&gt;Install-Package Microsoft.Data.Services.Client&lt;/code&gt;. You will still need to remove the reference to &lt;code&gt;System.Data.Services.Client&lt;/code&gt; using one of the methods below.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p&gt;Right-click the project name in Solution Explorer, select Property Pages, then choose the References tab. Remove the reference to &lt;code&gt;System.Data.Services.Client&lt;/code&gt;, then add references to &lt;code&gt;Microsoft.Data.Services.Client&lt;/code&gt;, &lt;code&gt;Microsoft.Data.OData&lt;/code&gt;, &lt;code&gt;Microsoft.Data.Edm&lt;/code&gt; and &lt;code&gt;System.Spatial&lt;/code&gt; that were installed with WCF Data Services 5.0.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p&gt;Edit the &amp;lt;assemblies&amp;gt; section in the project’s web.config file.&lt;/p&gt;          &lt;p&gt;Remove the reference to System.Data.Services.Client:&lt;/p&gt;          &lt;pre&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;compilation&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;
&lt;/font&gt;  &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;assemblies&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;add&lt;/font&gt; &lt;font color="#ff0000"&gt;assembly&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089&amp;quot; /&amp;gt;
&lt;/font&gt;  &lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;assemblies&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;compilation&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/pre&gt;

        &lt;p&gt;Add references to the new client assemblies:&lt;/p&gt;

        &lt;pre&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;compilation&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
  &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;assemblies&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;add&lt;/font&gt; &lt;font color="#ff0000"&gt;assembly&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;System.Spatial, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot;/&amp;gt;
&lt;/font&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;add&lt;/font&gt; &lt;font color="#ff0000"&gt;assembly&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;Microsoft.Data.Services.Client, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot;/&amp;gt;
&lt;/font&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;add&lt;/font&gt; &lt;font color="#ff0000"&gt;assembly&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;Microsoft.Data.OData, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot;/&amp;gt;
&lt;/font&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;add&lt;/font&gt; &lt;font color="#ff0000"&gt;assembly&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;Microsoft.Data.Edm, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot;/&amp;gt;
&lt;/font&gt;  &lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;assemblies&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;compilation&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/pre&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;p&gt;Configure the project to use the new build provider for WCF Data Services.&lt;/p&gt;

    &lt;p&gt;Edit the &lt;code&gt;web.config&lt;/code&gt; file to override the default &lt;code&gt;DataServiceBuildProvider&lt;/code&gt; that is specified in the root &lt;code&gt;web.config&lt;/code&gt; that is installed with the .NET Framework.&lt;/p&gt;

    &lt;pre&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;compilation&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
  &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;folderLevelBuildProviders&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;remove&lt;/font&gt; &lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;DataServiceBuildProvider&amp;quot;/&amp;gt;
&lt;/font&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;add&lt;/font&gt; &lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;DataServiceBuildProvider&amp;quot;&lt;/font&gt; &lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;System.Data.Services.BuildProvider.DataServiceBuildProvider, Microsoft.Data.Services.Design, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot;/&amp;gt;
&lt;/font&gt;  &lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;folderLevelBuildProviders&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;compilation&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/pre&gt;

    &lt;p&gt;This step only needs to be done once per project and does not need to be repeated if additional service references are added. All other steps need to be done for each service reference.&lt;/p&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;p&gt;Update the &lt;code&gt;Reference.datasvcmap&lt;/code&gt; file for the service reference.&lt;/p&gt;

    &lt;p&gt;The &lt;code&gt;Reference.datasvcmap&lt;/code&gt; file contains parameters that control how the code is generated for the service reference. The following parameters are the default for other project types and will allow your types to be used with data binding and will allow the client to communicate with services that support v3 of the OData protocol.&lt;/p&gt;

    &lt;pre&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;ReferenceGroup&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
  &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;Parameters&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;Parameter&lt;/font&gt; &lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;UseDataServiceCollection&amp;quot;&lt;/font&gt; &lt;font color="#ff0000"&gt;Value&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;true&amp;quot; /&amp;gt;
&lt;/font&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;Parameter&lt;/font&gt; &lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;Version&amp;quot;&lt;/font&gt; &lt;font color="#ff0000"&gt;Value&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;3.0&amp;quot; /&amp;gt;
&lt;/font&gt;  &lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;Parameters&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;ReferenceGroup&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10294589" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/How+To/">How To</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/OData/">OData</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/WCF+Data+Services/">WCF Data Services</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Web+Site+Project/">Web Site Project</category></item><item><title>Actions in WCF Data Services – Part 3: A sample provider for the Entity Framework</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/04/12/actions-in-wcf-data-services-part-3-a-sample-provider-for-the-entity-framework.aspx</link><pubDate>Thu, 12 Apr 2012 16:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10293241</guid><dc:creator>dpblogs</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10293241</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/04/12/actions-in-wcf-data-services-part-3-a-sample-provider-for-the-entity-framework.aspx#comments</comments><description>&lt;p&gt;This post is the last in a series on Actions in WCF Data Services. The series was started with &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/10/actions-in-wcf-data-services-part-1-service-author-code.aspx"&gt;an example experience for defining actions (Part 1)&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/actions-in-wcf-data-services-part2-how-idataserviceactionprovider-works.aspx"&gt;how IDataServiceActionProvider works (Part 2)&lt;/a&gt;. In this post we&amp;rsquo;ll go ahead and walk through a sample action provider implementation that delivers the experience outlined in part 1 for the Entity Framework.&lt;/p&gt;
&lt;p&gt;If you want to walk through the code while reading this you&amp;rsquo;ll find the code here: &lt;a href="http://efactionprovider.codeplex.com"&gt;http://efactionprovider.codeplex.com&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;Implementation Strategy&lt;/h1&gt;
&lt;p&gt;The center of the implementation is the &lt;strong&gt;EntityFrameworkActionProvider&lt;/strong&gt; class that derives from &lt;strong&gt;ActionProvider&lt;/strong&gt;. The &lt;strong&gt;EntityFrameworkActionProvider&lt;/strong&gt; is specific to EF, whereas the &lt;strong&gt;ActionProvider&lt;/strong&gt; provides a generic starting point for an implementation of &lt;strong&gt;IDataServiceActionProvider&lt;/strong&gt; that enables the experience outlined in &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/10/actions-in-wcf-data-services-part-1-service-author-code.aspx"&gt;Part 1&lt;/a&gt;. &lt;br /&gt; &lt;br /&gt;There is quite a bit going on in the sample code, so I can&amp;rsquo;t walk through all of it in a single blog post, instead I&amp;rsquo;ll focus on the most interesting bits of the code:&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;Finding Actions&lt;/h2&gt;
&lt;p&gt;Data Service providers can be completely dynamic, producing a completely different model for each request. However with the built-in Entity Framework provider the model is static, basically because the EF model is static, also the actions are static too, because they are defined in code using methods with attributes on them. This all means one thing &amp;ndash; our implementation can do a single reflection pass to establish what actions are in the model and cache that for all requests.&lt;/p&gt;
&lt;p&gt;So every time the &lt;strong&gt;EntityFrameActionProvider&lt;/strong&gt; is constructed, it first checks a cache of actions defined on our data source, which in our case is a class derived from EF&amp;rsquo;s &lt;strong&gt;DBContext&lt;/strong&gt;. If a cache look up it successful great, if not it uses the &lt;strong&gt;ActionFactory&lt;/strong&gt; class to go an construct &lt;strong&gt;ServiceAction&lt;/strong&gt;s for every action declared on the &lt;strong&gt;DBContext&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The algorithm for the &lt;strong&gt;ActionFactory&lt;/strong&gt; is relatively simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is given the Type of the class that defines all the Actions. For us that is the &lt;strong&gt;T&lt;/strong&gt; passed to &lt;strong&gt;DataService&amp;lt;T&amp;gt;&lt;/strong&gt;, which is a class derived from EF&amp;rsquo;s &lt;strong&gt;DBContext&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It them looks for methods with one of these attributes &lt;strong&gt;[Action]&lt;/strong&gt;, &lt;strong&gt;[NonBindableAction] &lt;/strong&gt;or &lt;strong&gt;[OccasionallyBindableAction]&lt;/strong&gt;, all of which represent different types of actions.&lt;/li&gt;
&lt;li&gt;For each method it finds it then uses the &lt;strong&gt;IDataServiceMetadataProvider&lt;/strong&gt; it was with constructed with to convert the parameters and return types into &lt;strong&gt;ResourceType&lt;/strong&gt;s.&lt;/li&gt;
&lt;li&gt;At this point it can construct a &lt;strong&gt;ServiceAction&lt;/strong&gt; for each. &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Parameter Marshaling&lt;/h2&gt;
&lt;p&gt;When an action is actually invoked we need to convert any parameters from WCF Data Services internal representation into objects that the end users methods can actually handle. It is likely that marshaling will be quite different for different underlying providers (EF, Reflection, Custom etc), so the &lt;strong&gt;ActionProvider&lt;/strong&gt; uses an interface &lt;strong&gt;IParameterMarshaller&lt;/strong&gt;, whenever it needs to convert parameters. The EF&amp;rsquo;s parameter marshaled looks like this:&lt;/p&gt;
&lt;p&gt;public class EntityFrameworkParameterMarshaller: IParameterMarshaller &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static MethodInfo CastMethodGeneric = typeof(Enumerable).GetMethod("Cast"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static MethodInfo ToListMethodGeneric = typeof(Enumerable).GetMethod("ToList");&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object[] Marshall(DataServiceOperationContext operationContext, ServiceAction action, object[] parameters) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pvalues = action.Parameters.Zip(parameters, (parameter, parameterValue) =&amp;gt; new { Parameter = parameter, Value = parameterValue }); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var marshalled = pvalues.Select(pvalue =&amp;gt; GetMarshalledParameter(operationContext, pvalue.Parameter, pvalue.Value)).ToArray();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return marshalled; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private object GetMarshalledParameter(DataServiceOperationContext operationContext, ServiceActionParameter serviceActionParameter, object value) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var parameterKind = serviceActionParameter.ParameterType.ResourceTypeKind; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Need to Marshall MultiValues i.e. Collection(Primitive) &amp;amp; Collection(ComplexType) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (parameterKind == ResourceTypeKind.EntityType) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This entity is UNATTACHED. But people are likely to want to edit this... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IDataServiceUpdateProvider2 updateProvider = operationContext.GetService(typeof(IDataServiceUpdateProvider2)) as IDataServiceUpdateProvider2; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value = updateProvider.GetResource(value as IQueryable, serviceActionParameter.ParameterType.InstanceType.FullName); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value = updateProvider.ResolveResource(value); // This will attach the entity. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (parameterKind == ResourceTypeKind.EntityCollection) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // WCF Data Services constructs an IQueryable that is NoTracking... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // but that means people can't just edit the entities they pull from the Query. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var query = value as ObjectQuery; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.MergeOption = MergeOption.AppendOnly; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (parameterKind == ResourceTypeKind.Collection) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // need to coerce into a List&amp;lt;&amp;gt; for dispatch &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var enumerable = value as IEnumerable; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the &amp;lt;T&amp;gt; in List&amp;lt;T&amp;gt; is the Instance type of the ItemType &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var elementType = (serviceActionParameter.ParameterType as CollectionResourceType).ItemType.InstanceType; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // call IEnumerable.Cast&amp;lt;T&amp;gt;(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var castMethod = CastMethodGeneric.MakeGenericMethod(elementType); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; object marshalledValue = castMethod.Invoke(null, new[] { enumerable }); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // call IEnumerable&amp;lt;T&amp;gt;.ToList(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var toListMethod = ToListMethodGeneric.MakeGenericMethod(elementType); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value = toListMethod.Invoke(null, new[] { marshalledValue }); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return value; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;This is probably the hardest part of the whole sample because it involves understanding what is necessary to make the parameters you pass to the service authors action methods updatable (remembers Actions generally have side-effects).&lt;/p&gt;
&lt;p&gt;For example when Data Services see&amp;rsquo;s something like this: &lt;strong&gt;POST &lt;/strong&gt;&lt;a href="http://server/service/Movies(1)/Checkout"&gt;&lt;strong&gt;http://server/service/Movies(1)/Checkout&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It builds a query to represent the Movie parameter to the Checkout action, however when Data Services is building queries, it doesn&amp;rsquo;t need the Entity Framework to track the results &amp;ndash; because all it is doing is serializing the entities and then discarding them. However in this example, we need to take the query and actually retrieve the object in such as way that it is tracked by EF, so that if it gets modified inside the action EF will notice and push changes back to the Database during SaveChanges.&lt;/p&gt;
&lt;h2&gt;Delaying invocation&lt;/h2&gt;
&lt;p&gt;As discussed in &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/actions-in-wcf-data-services-part2-how-idataserviceactionprovider-works.aspx"&gt;Part 2&lt;/a&gt;, we need to delay actual invocation of the action until SaveChanges(), to do this we return an implementation of an interface called &lt;strong&gt;IDataServiceInvokable&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;public class ActionInvokable : IDataServiceInvokable &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceAction _serviceAction;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Action _action; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool _hasRun = false; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; object _result;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ActionInvokable(DataServiceOperationContext operationContext, ServiceAction serviceAction, object site, object[] parameters, IParameterMarshaller marshaller) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _serviceAction = serviceAction; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActionInfo info = serviceAction.CustomState as ActionInfo; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var marshalled = marshaller.Marshall(operationContext,serviceAction,parameters);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.AssertAvailable(site,marshalled[0], true); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _action = () =&amp;gt; CaptureResult(info.ActionMethod.Invoke(site, marshalled)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void CaptureResult(object o) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_hasRun) throw new Exception("Invoke not available. This invokable has already been Invoked."); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _hasRun = true; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _result = o; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object GetResult() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!_hasRun) throw new Exception("Results not available. This invokable hasn't been Invoked."); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _result; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Invoke() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _action(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new DataServiceException( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 500, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string.Format("Exception executing action {0}", _serviceAction.Name) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;As you can see this does a couple of things, it creates an Action (this time a CLR one - just to confuse the situation i.e. a delegate that returns void), that actually calls the method on your &lt;strong&gt;DBContext&lt;/strong&gt; via reflection passing the marshaled parameters. It also has a few guards, one to insure that Invoke() is only called once, and another to make sure GetResult() is only called after Invoke().&lt;/p&gt;
&lt;h2&gt;Actions that are bound *sometimes*&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/10/actions-in-wcf-data-services-part-1-service-author-code.aspx"&gt;Part 1&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/actions-in-wcf-data-services-part2-how-idataserviceactionprovider-works.aspx"&gt;2&lt;/a&gt; introduce the concept of occasionally bindable actions, but basically an action might not always be available in all states, for example you might not always be able to checkout a movie (perhaps you already have it checked out).&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;ActionInfo&lt;/strong&gt; class has an &lt;strong&gt;IsAvailable(&amp;hellip;)&lt;/strong&gt; method which is used by the &lt;strong&gt;ActionProvider&lt;/strong&gt; whenever WCF Data Services need to know if an Action should be advertised or not. The implementation of this will call the method specified in the &lt;strong&gt;[OccasionallyBindableAction]&lt;/strong&gt; attribute. The code is complicated because it supports always return true without actually checking if the actual availability method is too expensive to call repeatedly. This is indicated using the &lt;strong&gt;[SkipCheckForFeeds]&lt;/strong&gt; attribute.&lt;/p&gt;
&lt;h1&gt;Getting the Sample Code&lt;/h1&gt;
&lt;p&gt;The &lt;a href="http://efactionprovider.codeplex.com/"&gt;sample is on codeplex&lt;/a&gt; made up of two projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ActionProviderImplementation &amp;ndash; the actual implementation of the Entity Framework action provider.&lt;/li&gt;
&lt;li&gt;MoviesWebsite &amp;ndash; a sample MVC3 website that exposes a simple OData Service &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;For most of you &lt;a href="http://efactionprovider.codeplex.com/"&gt;downloading the samples&lt;/a&gt; and using them to create a OData Service with Actions over the Entity Framework is all you&amp;rsquo;ll need.&lt;/p&gt;
&lt;p&gt;However if you are actually considering tweaking the example or building your own from scratch hopefully you now have enough context!&lt;/p&gt;
&lt;p&gt;Happy coding &lt;br /&gt;&lt;a href="http://twitter.com/adjames"&gt;&lt;strong&gt;Alex James&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;Senior Program Manager, Microsoft.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10293241" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Sample/">Sample</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Actions/">Actions</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/OData+V3/">OData V3</category></item><item><title>What happened to application/json in WCF DS 5.0?</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/what-happened-to-application-json-in-wcf-ds-5-0.aspx</link><pubDate>Wed, 11 Apr 2012 23:05:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10292869</guid><dc:creator>dpblogs</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10292869</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/what-happened-to-application-json-in-wcf-ds-5-0.aspx#comments</comments><description>&lt;h2&gt;The roadmap for serialization formats&lt;/h2&gt;  &lt;p&gt;We have been talking &lt;a href="http://www.odata.org/blog/2011/3/25/an-efficient-format-for-odata"&gt;for a while&lt;/a&gt; about a &lt;a href="http://www.odata.org/blog/2012/1/19/format-efficiency-take-2-really-clean-json"&gt;more efficient format&lt;/a&gt; for JSON serialization. The new serialization format will be part of the OData v3 protocol, and we believe that &lt;b&gt;the much-improved JSON format should be the default response when requesting application/json&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;You may notice that when you upgrade to WCF DS 5.0, requesting the old JSON format is a bit different. To get the old JSON format, you must now explicitly request application/json;odata=verbose or set the MaxDataServiceVersion header to 2.0.&lt;/p&gt;  &lt;h2&gt;When will I get a 415 response and what can I do about it?&lt;/h2&gt;  &lt;p&gt;WCF Data Services 5.0 will return a 415 in response to a request for application/json if the &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.services.dataservicebehavior.maxprotocolversion.aspx"&gt;service configuration allows a v3 response&lt;/a&gt; and if the client does not specify a MaxDataServiceVersion header or specifies a MaxDataServiceVersion header of 3.0. &lt;b&gt;Clients should always send a value for the MaxDataServiceVersion header to ensure forward compatibility.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;There are two ways to get a response formatted with JSON verbose:&lt;/p&gt;  &lt;p&gt;1. Set the &lt;a href="http://msdn.microsoft.com/en-us/library/dd541103(v=PROT.10).aspx"&gt;MaxDataServiceVersion header&lt;/a&gt; to 2.0 or less. For instance:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2" face="Consolas"&gt;GET &lt;/font&gt;&lt;a href="http://odata.example.org/Items?$top=5"&gt;&lt;font size="2" face="Consolas"&gt;http://odata.example.org/Items?$top=5&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Consolas"&gt; HTTP/1.1&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Host: odata.example.org&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Connection: keep-alive&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.152 Safari/535.19&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Accept: application/json&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Accept-Encoding: gzip,deflate,sdch&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Accept-Language: en-US,en;q=0.8&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;MaxDataServiceVersion: 2.0&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;2. Request a content type of &lt;a href="http://msdn.microsoft.com/en-us/library/dd541269(v=prot.10).aspx"&gt;application/json;odata=verbose&lt;/a&gt;. For instance:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2" face="Consolas"&gt;GET &lt;/font&gt;&lt;a href="http://odata.example.org/Items?$top=5"&gt;&lt;font size="2" face="Consolas"&gt;http://odata.example.org/Items?$top=5&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Consolas"&gt; HTTP/1.1&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Host: odata.example.org&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Connection: keep-alive&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.152 Safari/535.19&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Accept: application/json;odata=verbose&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Accept-Encoding: gzip,deflate,sdch&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Accept-Language: en-US,en;q=0.8&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Consolas"&gt;MaxDataServiceVersion: 3.0&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It’s possible to modify the headers with jQuery as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;$.ajax(url, {&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; dataType: &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font color="#800000"&gt;&amp;quot;json&amp;quot;, &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt" color="#77933c"&gt;// this tells jquery that you are expcting a json object and so it will parse the data for you.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: "&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; beforeSend: &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt; (xhr) {&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xhr.setRequestHeader(&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font color="#800000"&gt;&amp;quot;Accept&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: "&gt;, &lt;/span&gt;&lt;span style="font-family: ; color: "&gt;&lt;font color="#800000"&gt;&amp;quot;application/json;odata=verbose&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xhr.setRequestHeader(&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font color="#800000"&gt;&amp;quot;MaxDataServiceVersion&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: "&gt;, &lt;/span&gt;&lt;span style="font-family: ; color: "&gt;&lt;font color="#800000"&gt;&amp;quot;3.0&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; },&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; success: &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt; (data) {&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: "&gt;&lt;font style="font-size: 10pt" color="#77933c"&gt;// do something interesting with the data you get back.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt; background: white" class="MsoNormal"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;});&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Why did WCF DS 5.0 ship before JSON light?&lt;/h2&gt;  &lt;p&gt;We had a set of features that were ready to be released as part of WCF DS 5.0. The more efficient JSON implementation is currently in progress and will be released sometime later this year.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10292869" width="1" height="1"&gt;</description></item><item><title>Actions in WCF Data Services – Part 2: How IDataServiceActionProvider works</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/actions-in-wcf-data-services-part2-how-idataserviceactionprovider-works.aspx</link><pubDate>Wed, 11 Apr 2012 20:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10292834</guid><dc:creator>dpblogs</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10292834</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/actions-in-wcf-data-services-part2-how-idataserviceactionprovider-works.aspx#comments</comments><description>&lt;p&gt;In this post we will explorer the IDataServiceActionProvider interface, which must be implemented to add Actions to a WCF Data Service.&lt;/p&gt;
&lt;p&gt;However if you are simply creating an OData Service and you can find an implementation of IDataServiceActionProvider that works for you (I&amp;rsquo;ll post sample code with Part 3) then you can probably skip this post.&lt;/p&gt;
&lt;p&gt;Now before we continue, to understand this post fully you&amp;rsquo;ll need to be familiar with Custom Data Service Providers and a good place to start is &lt;a href="http://blogs.msdn.com/b/alexj/archive/tags/dsp/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;IDataServiceActionProvider&lt;/h1&gt;
&lt;p&gt;Okay so lets take a look at the actions interface:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;public interface IDataServiceActionProvider &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool AdvertiseServiceAction( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataServiceOperationContext operationContext, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceAction serviceAction, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; object resourceInstance, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool resourceInstanceInFeed, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ref ODataAction actionToSerialize); &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IDataServiceInvokable CreateInvokable( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataServiceOperationContext operationContext, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceAction serviceAction, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; object[] parameterTokens); &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; IEnumerable&amp;lt;ServiceAction&amp;gt; GetServiceActions( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataServiceOperationContext operationContext); &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; IEnumerable&amp;lt;ServiceAction&amp;gt; GetServiceActionsByBindingParameterType( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataServiceOperationContext operationContext, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResourceType bindingParameterType); &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; bool TryResolveServiceAction( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataServiceOperationContext operationContext, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string serviceActionName, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out ServiceAction serviceAction); &lt;br /&gt;}&lt;/span&gt; &lt;br /&gt; &lt;br /&gt;You&amp;rsquo;ll notice that every method either takes or returns a ServiceAction. ServiceAction is the metadata representation of an Action, that includes information like the Action name, its parameters, its ReturnType etc.&lt;/p&gt;
&lt;p&gt;When you implement IDataServiceActionProvider you are augmenting the metadata for your service which is defined by your services implementation of &lt;a href="http://blogs.msdn.com/b/alexj/archive/2010/01/08/creating-a-data-service-provider-part-3-metadata.aspx"&gt;IDataServiceMetadataProvider&lt;/a&gt; with Actions and handling dispatch to those actions as appropriate.&lt;/p&gt;
&lt;p&gt;We added this new interface rather than creating a new version of IDataServiceMetadataProvider because we didn&amp;rsquo;t have time to add an Action implementation for the built-in Entity Framework and Reflection provider, but we still wanted you be able to add actions when using those providers. This separation of concerns allows you to use the built-in providers and layer in support for Actions on the side.&lt;/p&gt;
&lt;p&gt;However one problem remains: to create a new Action you will need access to the ResourceTypes in the your service, so you can create Action parameters and specify Action ReturnTypes. Previously you couldn&amp;rsquo;t get at the ResourceTypes unless you created a completely custom provider. So to give you access to the ResourceTypes we added an implementation of IServiceProvider to the DataServiceOperationContext class which is passed to every one of the above methods.&lt;/p&gt;
&lt;p&gt;Now anywhere you have one of these operationContexts you can get the current implementation of IDataServiceMetadataProvider (and thus the ResourceTypes) like this:&lt;/p&gt;
&lt;p&gt;var metadata = operationContext.GetService(typeof(IDataServiceMetadataProvider)) as IDataServiceMetadataProvider;&lt;/p&gt;
&lt;h1&gt;Exposing ServiceActions&lt;/h1&gt;
&lt;p&gt;There are 3 methods that the Data Services Server uses to learn about actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GetServiceActions(DataServiceOperationContext) &amp;ndash; returns every ServiceAction in the service, and is used when we need all the metadata, i.e. if someone goes to $metadata&lt;/li&gt;
&lt;li&gt;GetServiceActionsByBindingParameterType(DataServiceOperationContext,ResourceType) &amp;ndash; returns every ServiceAction that can be bound to the ResourceType specified. This is used when we are returning an entity and we want to include information about Actions that can be invoked against that entity. The contract here is you should only include Actions that take the specified ResourceType exactly (i.e. no derived types) as the binding parameter to the action. We will call this method once for each ResourceType we encounter during serialization.&lt;/li&gt;
&lt;li&gt;TryResolveServiceAction(DataServiceOperationContext,serviceActionName,out serviceAction) &amp;ndash; return true if a ServiceAction with the specified name is found.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now you could clearly implement both GetServiceActionsByBindingParameterType(..) and TryResolveServiceAction(..) by calling GetServiceActions(..), but Data Services tries to avoid loading all the metadata at once wherever possible, so you get the opportunity to provide more efficient targeted implementations.&lt;/p&gt;
&lt;p&gt;Basically 99% of the time Data Services doesn&amp;rsquo;t need every ServiceAction, so it won&amp;rsquo;t ask for all of them most of the time.&lt;/p&gt;
&lt;p&gt;To expose an Action you simply create a ServiceAction and return it from these methods as appropriate. For example to create a ServiceAction that corresponds to this C# signature (where Movie is an entity):&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;void Rate(Movie movie, int rating)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You would do something like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;ServiceAction movieRateAction = new ServiceAction( &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;ldquo;Rate&amp;rdquo;, &lt;span style="color: #333333;" color="#333333"&gt;&lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// name of the action&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; null, &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// no return type i.e. void&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; null, &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// no return type means we don&amp;rsquo;t need to know the ResourceSet so use null.&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; OperationParameterBindingKind.Always, &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// i.e this action is always bound to an Movie entities &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // other options are Never and Always.&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; new [] { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new ServiceActionParameter(&amp;ldquo;movie&amp;rdquo;, movieResourceType),&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new ServiceActionParameter(&amp;ldquo;rating&amp;rdquo;, ResourceType.GetPrimitiveType(typeof(int))) &lt;br /&gt;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As you can see nothing too tricky here.&lt;/p&gt;
&lt;h1&gt;Advertizing ServiceActions&lt;/h1&gt;
&lt;p&gt;If you looked at the &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/10/actions-in-wcf-data-services-part-1-service-author-code.aspx"&gt;first post&lt;/a&gt; you&amp;rsquo;ll remember that some Actions are available only in certain states. This is configured when you create your the ServiceAction, something like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;ServiceAction checkoutMovieAction = new ServiceAction( &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;ldquo;Checkout&amp;rdquo;, &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// name of the action&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; ResourceType.GetPrimitiveType(typeof(bool)), &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// Edm.Boolean is the returnType&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; null, &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// the returnType is a bool, so it doesn&amp;rsquo;t have a ResourceSet&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; OperationParameterBindingKind.Sometimes, &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// You can&amp;rsquo;t always checkout a movie&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; new [] { new ServiceActionParameter(&amp;ldquo;Movie&amp;rdquo;, movieResourceType) } &lt;br /&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notice in this example the OperationParameterBindingKind is set to Sometimes which means the Checkout Action is not available for every Movie. So when DataServices returns a Movie it will check with the ActionProvider to see if the Action is currently available. Which it does by calling:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;bool AdvertiseServiceAction( &lt;br /&gt;&amp;nbsp;&amp;nbsp; DataServiceOperationContext operationContext,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; ServiceAction serviceAction, &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// the action that the server knows MAY be bound.&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; object resourceInstance, &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// the entity which MAY allow the action to be bound. &lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; bool resourceInstanceInFeed, &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// whether the server is serializing a single entity or a feed (expect multiple calls). &lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; ref ODataAction actionToSerialize); &lt;span style="color: #9bbb59;" color="#9bbb59"&gt;// modifying this parameter allows you to do customize things like the URL &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the client will POST to to invoke the action.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;For example you might check if the current user (i.e. HttpContext.Current.User) has a Movie checked out already, to decide whether they can Checkout that Movie or not.&lt;/p&gt;
&lt;p&gt;The resourceInstanceInFeed parameter needs a special mention. Sometimes working out whether an Action is available is time or resource intensive, for example if you have to do a separate database query. Generally this isn&amp;rsquo;t a problem if you are returning just one Entity, but if you are returning a whole feed of entities it is clearly undesirable. The OData protocol says that in situations like this you should err by exposing actions that aren&amp;rsquo;t actually available (and fail later if they are invoked). WCF Data Services doesn&amp;rsquo;t know if it is expensive to establish action availability, so to help you decide whether to do the check it lets you know whether you are in a feed or not. This way your Action provider can just return true, it if knows it is costly to calculate and it is in a feed.&lt;/p&gt;
&lt;h1&gt;Invoking ServiceActions&lt;/h1&gt;
&lt;p&gt;When an action is invoked, your implementation of this is called:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;IDataServiceInvokable CreateInvokable(&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; DataServiceOperationContext operationContext,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; ServiceAction serviceAction, &lt;br /&gt;&amp;nbsp;&amp;nbsp; object[] parameterTokens);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notice you don&amp;rsquo;t actually invoke the action immediately instead you return an implementation of IDataServiceInvokable, which looks like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;public interface IDataServiceInvokable &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; object GetResult(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Invoke(); &lt;br /&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;As you can see this is a simple interface, but why do we delay calling the action?&lt;/p&gt;
&lt;p&gt;Well actions generally have side-effects so they need to work in conjunction with the UpdateProvider (or IDataServiceUpdateProvider2), to actually save those changes to disk. To support Actions you need an Update Provider like the built-in Entity Framework provider that implements the new IDataServiceUpdateProvider2 interface:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;public interface IDataServiceUpdateProvider2 : IDataServiceUpdateProvider, IUpdatable &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void ScheduleInvokable(IDataServiceInvokable invokable); &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This allows WCF Data Services to schedule arbitrary work to happen during IDataServiceUpdateProvider.SaveChanges(..), which allows update providers and action providers to be written independently. Which is great because if you are using the Entity Framework you really don&amp;rsquo;t want to have to write an update provider from scratch.&lt;/p&gt;
&lt;p&gt;Now when you implement IDataServiceInvokable you are responsible for 3 things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Capturing and potentially marshaling the parameters.&lt;/li&gt;
&lt;li&gt;Dispatching the parameters to the code that actually implements the Action when Invoke() is called.&lt;/li&gt;
&lt;li&gt;Storing any results from Invoke() so they can be retrieved using GetResult() &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The parameters themselves are passed as tokens. This is because it is possible to write a Data Service Provider that works with tokens that represent resources, if this is the case you may need to convert these token into actual resources before dispatching to the actual action. What is required depends 100% on the rest of the provider code, so it is impossible to say exactly what you need to do here. However in part 3 well explore doing this for the Entity Framework.&lt;/p&gt;
&lt;p&gt;If the first parameter to the action is a binding parameter (i.e. an EntityType or a Collection of EntityTypes) it will be passed as an un-enumerated IQueryable. Most of the time this isn&amp;rsquo;t too interesting but it does mean you can do nifty tricks like write an action that doesn&amp;rsquo;t actually retrieve the entities from the database if appropriate.&lt;/p&gt;
&lt;h1&gt;Summary&lt;/h1&gt;
&lt;p&gt;This post walked you through the design of IDataServiceActionProvider and the expectations for people implementing this interface. While this is quite a tricky interface to implement, it is low level code and hopefully you will be able to find an existing implementation that works for you. Indeed in Part 3 we will share and walk through an sample implementation for the Entity Framework designed to deliver the Service Author Experience we introduced in &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/10/actions-in-wcf-data-services-part-1-service-author-code.aspx"&gt;Part 1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you have any questions let me know.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/adjames"&gt;&lt;strong&gt;Alex James&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;Senior Program Manager, Microsoft&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10292834" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Actions/">Actions</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/OData+V3/">OData V3</category></item><item><title>Actions in WCF Data Services – Part 1: Service Author Code</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/04/10/actions-in-wcf-data-services-part-1-service-author-code.aspx</link><pubDate>Wed, 11 Apr 2012 00:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10292460</guid><dc:creator>dpblogs</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10292460</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/04/10/actions-in-wcf-data-services-part-1-service-author-code.aspx#comments</comments><description>&lt;p&gt;If you read our &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2011/10/17/actions-in-wcf-data-services.aspx"&gt;last post on Actions&lt;/a&gt; you&amp;rsquo;ll know that Actions are now in both OData and WCF Data Services and that they are cool:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="font-size: x-small;" size="2"&gt;&amp;ldquo;Actions will provide a way to inject behaviors into an otherwise data-centric model without confusing the data aspects of the model, while still staying true to the resource oriented underpinnings of OData."&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Our key design goal for RTM was to allow you or third party vendors to create an Action Provider that adds Action support to an existing WCF Data Services Provider. Adding Actions support to the built-in Entity Framework Provider for example.&lt;/p&gt;
&lt;p&gt;This post is the first of a series that will in turn introduce:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Experience we want to enable, i.e. the code the service author writes.&lt;/li&gt;
&lt;li&gt;The Action Provider API and why it is structured as it is.&lt;/li&gt;
&lt;li&gt;A sample implementation of an Action Provider for the Entity Framework&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;Remember if you are an OData Service author, happy to use an Action Provider written by someone else, all you need worry about is (1), and that is what this post will cover.&lt;/p&gt;
&lt;h1&gt;Scenario&lt;/h1&gt;
&lt;p&gt;Imagine that you have the following Entity Framework model&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;public class MoviesModel: DbContext &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DbSet&amp;lt;Actor&amp;gt; Actors { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DbSet&amp;lt;Director&amp;gt; Directors { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DbSet&amp;lt;Genre&amp;gt; Genres { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DbSet&amp;lt;Movie&amp;gt; Movies { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DbSet&amp;lt;UserRental&amp;gt; Rentals { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DbSet&amp;lt;Tag&amp;gt; Tags { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DbSet&amp;lt;User&amp;gt; Users { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DbSet&amp;lt;UserRating&amp;gt; Ratings { get; set; } &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Which you expose as using WCF Data Services configured like this: &lt;br /&gt; &lt;br /&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;config.SetEntitySetAccessRule("*", EntitySetRights.AllRead); &lt;br /&gt;config.SetEntitySetAccessRule("EdmMetadatas", EntitySetRights.None); &lt;br /&gt;config.SetEntitySetAccessRule("Users", EntitySetRights.None); &lt;br /&gt;config.SetEntitySetAccessRule("Rentals", EntitySetRights.None); &lt;br /&gt;config.SetEntitySetAccessRule("Ratings", EntitySetRights.None);&lt;/span&gt; &lt;br /&gt; &lt;br /&gt;Notice that some of the Entity Framework data is completely hidden (Users,Rentals,Ratings and of course EdmMetadatas) and the rest is marked as ReadOnly. This means in this service people can see information about Movies, Genres, Actors, Directors and Tags, but they currently can&amp;rsquo;t edit this data through the service. Essentially some of the database is an implementation detail you don&amp;rsquo;t want the world to see. With Action for the first time it is easy to create a real distinction between your Data Model and your Service Model.&lt;/p&gt;
&lt;p&gt;Now imagine you have a method on your DbContext that looks something like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;public void Rate(Movie movie, int rating) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var userName = GetUsername(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var movieID = movie.ID;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Retrieve the existing rating by this user (or null if not found). &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;var existingRating = this.Ratings.SingleOrDefault(r =&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.UserUsername == userName &amp;amp;&amp;amp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.MovieID == movieID &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (existingRating == null) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Ratings.Add(new UserRating { MovieID = movieID, Rating = rating, UserUsername = userName }); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; existingRating.Rating = rating; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This code allows a user to rate a movie, simply by providing a rating and a movie. It uses ambient context to establish who is making the request (i.e. HttpContext.Current.User.Identity.Name), and looks for a rating by that User for that Movie (a user can only rate a movie once), if it finds one it gets modified otherwise a new rating is created.&lt;/p&gt;
&lt;h1&gt;Target Experience&lt;/h1&gt;
&lt;p&gt;Now imagine you want to expose this as an action. The first step would be to make your Data Service implement IServiceProvider like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;public class MoviesService : DataService&amp;lt;MoviesModel&amp;gt;, IServiceProvider &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp; public object GetService(Type serviceType) &lt;br /&gt;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (typeof(IDataServiceActionProvider) == serviceType) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new EntityFrameworkActionProvider(CurrentDataSource); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;hellip; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Where EntityFrameworkActionProvider is the custom action provider you want to use, in this case a sample provider that we&amp;rsquo;ll put up on codeplex when Part 3 of this series is released (sorry to tease).&lt;/p&gt;
&lt;p&gt;Next configure your service to expose Actions, in the InitializeService method:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;config.SetServiceActionAccessRule("*", ServiceActionRights.Invoke); &lt;br /&gt;config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As per usual * means all Actions, but you could just as easy expose just the actions you want by name.&lt;/p&gt;
&lt;p&gt;Finally with that groundwork done, expose your action by adding the [Action] attribute:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;[Action] &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;public void Rate(Movie movie, int rating) &lt;br /&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;With this done the action will show up in $metadata, like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;lt;FunctionImport Name="&lt;b&gt;Rate&lt;/b&gt;" IsBindable="&lt;b&gt;true&lt;/b&gt;"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Parameter Name="&lt;b&gt;movie&lt;/b&gt;" Type="&lt;b&gt;MoviesWebsite.Models.Movie&lt;/b&gt;" /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Parameter Name="&lt;b&gt;rating&lt;/b&gt;" Type="&lt;b&gt;Edm.Int32&lt;/b&gt;" /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;lt;/FunctionImport&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;And it will be advertised in Movie entities like this (in JSON format):&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "d": { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__metadata": {&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;hellip;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "actions": { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "http://localhost:15238/MoviesService.svc/$metadata#MoviesModel.Rate": [ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "title": "Rate", &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "target": "http://localhost:15238/MoviesService.svc/Movies(1)/Rate" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;hellip;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ID": 1, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Name": "Avatar" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This action can be invoked using the WCF Data Services Client like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;ctx.Execute( &lt;br /&gt;&amp;nbsp;&amp;nbsp; new Uri(&amp;ldquo;http://localhost:15238/MoviesService.svc/Movies(1)/Rate&amp;rdquo;), &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;ldquo;POST&amp;rdquo;, &lt;br /&gt;&amp;nbsp;&amp;nbsp; new BodyParameter(&amp;ldquo;rating&amp;rdquo;,4) &lt;br /&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;or, if you prefer being closer to the metal, more directly like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;POST http://localhost:15238/MoviesService.svc/Movies(1)/Rate HTTP/1.1 &lt;br /&gt;Content-Type: application/json &lt;br /&gt;Content-Length: 20 &lt;br /&gt;Host: localhost:15238&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp; "rating": 4 &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;All very easy don&amp;rsquo;t you think?&lt;/p&gt;
&lt;h1&gt;Actions whose availability depends upon Entity State&lt;/h1&gt;
&lt;p&gt;You may also remember that whether an action is available can depend on the state of the entity or service. For example you can&amp;rsquo;t Checkout a movie that you already have Checked out. To address this requirement we need a way to support this through attributes too.&lt;/p&gt;
&lt;p&gt;Excuse the terrible attribute name (it is only a sample) but perhaps something like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;[OccasionallyBindableAction("CanCheckout")] &lt;br /&gt;public void Checkout(Movie movie) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var userName = GetUsername(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var movieID = movie.ID;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var alreadyCheckedOut = this.Rentals.Any(r =&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.UserUsername == userName &amp;amp;&amp;amp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.MovieID == movieID &amp;amp;&amp;amp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.CheckedIn == null &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!alreadyCheckedOut) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // add a new rental &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Rentals.Add( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new UserRental { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MovieID = movieID, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CheckedOut = DateTime.Now, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserUsername = userName &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notice instead of the [Action] attribute this has an [OccasionallyBindableAction] attribute which takes the name of a method to call to see if this action is available. This method must take one parameter, the same type as the binding parameter of the action (so in this case a Movie) and return a boolean to indicate whether the action should be advertised.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;[SkipCheckForFeeds] &lt;br /&gt;public bool CanCheckout(Movie movie) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var username = GetUsername(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var rental = this.Rentals.SingleOrDefault( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r =&amp;gt; r.UserUsername == username &amp;amp;&amp;amp; r.MovieID == movie.ID &amp;amp;&amp;amp; r.CheckedIn == null &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rental == null) return true; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else return false; &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notice that this method runs a separate query to see if an unreturned rental exists for the current user and movie, if yes then the movie can&amp;rsquo;t be checked out, if no then the movie can be checked out.&lt;/p&gt;
&lt;p&gt;The alert amongst you will have noticed the [SkipCheckForFeeds] attribute. This is here for performance reasons. Why?&lt;/p&gt;
&lt;p&gt;Imagine that you retrieve a Feed of Movies, in theory we should call this &amp;lsquo;availability check&amp;rsquo; method for every Movie in the feed. Now if the method only needs information in the Movie (i.e. imagine if the Movie has a CanCheckout property) this is not a problem, but in our example we actually issue a separate database query. Clearly running one query to get a feed of items and then a new query for each action in that feed of items is undesirable from a performance perspective.&lt;/p&gt;
&lt;p&gt;We foresaw this problem and added some rules to the protocol to address this problem, namely if it is expensive to calculate the availability of an Action, it is okay to advertise the action whether it is available or not. So [SkipCheckForFeed] is used to indicate to our custom Actions Provider that this method is expensive and shouldn&amp;rsquo;t be called for all the Movies in a feed but should be advertised anyway.&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h1&gt;Summary&lt;/h1&gt;
&lt;p&gt;As you can see our goal is to enable 3rd party Action Provider to provide a highly intuitive way of adding Actions to your OData Service, the above code examples illustrate one possible set of experiences. As you experiment I&amp;rsquo;m confident that you will find Actions to be a very powerful way to add behaviors to your OData Service.&lt;/p&gt;
&lt;p&gt;In &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/actions-in-wcf-data-services-part2-how-idataserviceactionprovider-works.aspx"&gt;Part 2&lt;/a&gt; we will look at the IDataServiceActionProvider interface in detail, and then in Part 3 we&amp;rsquo;ll walk through an implementation for the Entity Framework (and I&amp;rsquo;ll post the sample Entity Framework Action Provider sample code).&lt;/p&gt;
&lt;p&gt;As always I&amp;rsquo;m super keen to hear what you think. &lt;br /&gt; &lt;br /&gt;&lt;a href="http://twitter.com/adjames"&gt;&lt;strong&gt;Alex James&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;Senior Program Manager, Microsoft.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10292460" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/Actions/">Actions</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/OData+V3/">OData V3</category></item><item><title>WCF Data Services 5.0 RTM Release</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/04/09/wcf-data-services-5-0-rtm-release.aspx</link><pubDate>Mon, 09 Apr 2012 16:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10291939</guid><dc:creator>dpblogs</dc:creator><slash:comments>20</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10291939</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/04/09/wcf-data-services-5-0-rtm-release.aspx#comments</comments><description>&lt;p&gt;I&amp;rsquo;m very pleased to announce the &lt;a href="http://go.microsoft.com/fwlink/p/?LinkId=248279"&gt;WCF Data Services 5.0 RTM&lt;/a&gt; release. You can download WCF Data Services 5.0 from &lt;a href="http://go.microsoft.com/fwlink/p/?LinkId=248279"&gt;here&lt;/a&gt;. This release includes several client and server features and libraries for .NET 4 and Silverlight 4.&lt;/p&gt;
&lt;p&gt;Below is a brief breakdown of the features that are available in this release. Upcoming blog posts will dive into&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vocabularies&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By providing the ability to annotate metadata and instance data, vocabularies define a powerful extensibility point for OData. They convey meaning and extra information to enable richer client experiences. Simple vocabulary terms can do things like indicate a property&amp;rsquo;s acceptable value range. A more complex vocabulary terms could define a mapping between a particular service&amp;rsquo;s person entity and a vCard schema.&lt;/p&gt;
&lt;p&gt;WCF Data Services 5.0 allows data service authors to use vocabularies in $metadata.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.odata.org/blog/2011/10/7/actions-in-odata"&gt;Actions in OData&lt;/a&gt; extend the set of operations that can be performed on or with a service or resource. Actions provide a way to inject behaviors into an otherwise data centric model without confusing the data aspects of the model. They stay true to the resource oriented underpinnings of OData. Actions may be used to extend CUD operations, invoke custom operations, etc.&lt;/p&gt;
&lt;p&gt;WCF Data Services 5.0 allows setting up a service with Actions as well as invoking actions and service operations with full support for parameters. However, to expose Actions you need to provide or source an implementation of IDataServiceActionProvider that works with the rest of the service. Subsequent blog posts on Actions will dig deeper on this feature. Read more about our &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/10/actions-in-wcf-data-services-part-1-service-author-code.aspx"&gt;actions support here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spatial&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There has been an explosion of location-aware devices and more demand for location-aware applications. &lt;a href="http://www.odata.org/blog/2011/5/3/geospatial-data-support-in-odata"&gt;OData supports geospatial data&lt;/a&gt; and WCF Data Services 5.0 comes with 16 new spatial primitives and some corresponding operations. This enables data consumers to perform operations on spatial values in filter, select and orderby clauses.&lt;/p&gt;
&lt;p&gt;Spatial primitives enable service authors to indicate, for example, that a property is a point, a line, or a polygon. These spatial primitives follow the &lt;a href="http://www.opengeospatial.org/standards/sfo"&gt;OGC&amp;rsquo;s Simple Features standard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Actions and Functions can be used to extend the operations associated with these primitives. This allows some servers to expose deep algorithms for powerful functionality while other services expose only basic operations. The community can develop vocabularies to describe common categories of advanced operations and indicate which ones a given service supports.&lt;/p&gt;
&lt;p&gt;WCF Data Services 5.0 allows addition of spatial type properties to models via Reflection and Custom Service Providers. This enables read/write support in ATOM or JSON formats for all spatial types supported by SQL Server 2008 R2. Moreover, this release supports querying for all entities ordered/filtered by distance to a location (i.e. find all coffee shops near me).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ODataLib:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The ODataLib .NET client and server libraries allow flexible low-level serialization/deserialization according to the &lt;a href="http://www.odata.org/developers/protocols"&gt;OData Protocol Specifications&lt;/a&gt;. ODataLib now supports serialization and deserialization of all OData payloads.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EdmLib&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ODataLib now ships with EdmLib, a new in-memory metadata system that makes it easy to build an Entity Data Model (EDM) of a service for OData serialization/deserialization. Moreover, EdmLib enables creation and consumption of annotations on any EDM model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Any/All&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WCF Data Services 5.0 increases the expressiveness of WCF Data Services queries to be able to express queries like &amp;lsquo;are there any customers which have no orders&amp;rsquo; or &amp;lsquo;are there any customers who only spend more than $100 at our shop&amp;rsquo;. We support the &amp;lsquo;any&amp;rsquo; and &amp;lsquo;all&amp;rsquo; canonical functions via the WCF Data Services client LINQ support.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Better Support for Inheritance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WCF Data Services 5.0 supports both exposing and consuming models which have properties (primitive, complex and navigation) defined on subtypes of the base type associated with the set.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Collections&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WCF Data Services 5.0 adds support for properties as collections of primitive or complex types. This enables easier modeling of things like lists of alternate email addresses for a Customer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Named Streams&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WCF Data Services 5.0 release allows an entry to have multiple streams associated with it such that you can now create services that do things such as expose a Photo entry with links to its print, web, and thumbnail versions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patch Method Support&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tools.ietf.org/html/rfc5789"&gt;PATCH&lt;/a&gt; is now a standard and is semantically equivalent to the MERGE method. WCF Data Services 5.0 release supports the PATCH method as a synonym to MERGE.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prefer Header Support&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Following the semantics of the &lt;a href="http://tools.ietf.org/html/draft-snell-http-prefer-01"&gt;Prefer header&lt;/a&gt;, WCF Data Services now support returning responses to Insert and Update requests.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We look forward to hearing your thoughts on the release.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Turker Keskinpala&lt;/p&gt;
&lt;p&gt;Program Manager&lt;/p&gt;
&lt;p&gt;WCF Data Services/OData Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10291939" width="1" height="1"&gt;</description></item><item><title>Announcing OData T4 for C#, Preview 1</title><link>http://blogs.msdn.com/b/astoriateam/archive/2012/01/19/announcing-odata-t4-for-c-preview-1.aspx</link><pubDate>Thu, 19 Jan 2012 21:35:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10258643</guid><dc:creator>dpblogs</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10258643</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2012/01/19/announcing-odata-t4-for-c-preview-1.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’m very excited to announce the release of OData T4 for C# Preview 1, for the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=230482&amp;amp;clcid=0x409"&gt;October 2011 CTP&lt;/a&gt; of the next version of WCF Data Services libraries, with support for code generation of service operations. The goal of this T4 preview and subsequent ones will be to get community feedback on the templates before having “Add Service Reference” natively generate T4 templates out of the box in a future release.&lt;/p&gt;  &lt;p&gt;Note that support for service operations was added to the T4 because many customers already use it and it has been a regularly requested feature by the community. Having said that, some support for &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2011/10/17/actions-in-wcf-data-services.aspx"&gt;actions/functions&lt;/a&gt; (which are the way forward for custom operations) will be introduced in an upcoming refresh to the template.&lt;/p&gt;  &lt;p&gt;We are looking to refresh the template by first week of February with feedback from the community as well as any bug fixes reported as well as once more by the time WCF Data Services V3 ships&lt;/p&gt;  &lt;p&gt;So please give your feedback at our &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/threads"&gt;team forum&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;How do I Use it? &lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Install &lt;a href="http://www.nuget.org/"&gt;Nuget package manager&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- Install &lt;a href="http://go.microsoft.com/fwlink/?LinkID=230482&amp;amp;clcid=0x409"&gt;October 2011 CTP&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- Add a Service Reference to an OData service&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;o This downloads the metadata&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;- Right-click Add reference-&amp;gt; “Manage NuGet packages” &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/3162.image001_5F00_2D87A650.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image001" border="0" alt="image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/4251.image001_5F00_thumb_5F00_141FA316.png" width="337" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;- Search for OdataT4 template&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/2086.image002_5F00_53E9899B.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image002" border="0" alt="image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/3175.image002_5F00_thumb_5F00_2838BF9F.png" width="587" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- Install OdataT4-CS package&lt;/p&gt;  &lt;p&gt;- This will add a Refrence.tt file in your project&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/6712.image003_5F00_3A15536C.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image003" border="0" alt="image003" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-93-metablogapi/0458.image003_5F00_thumb_5F00_32F616F4.png" width="338" height="249" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Known Issues, Limitations, and Workarounds&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- &lt;i&gt;I get the following error after adding the Nuget package:&lt;/i&gt; “&lt;i&gt;Running transformation: System.IO.DirectoryNotFoundException: Could not find a part of the path '&amp;lt;projectDirecotryRoot&amp;gt;\Service References\ServiceReference1\service.edmx'.T4 has incorrect edmx file path“&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;The current template assumes an ‘$projectRoot\ServiceRefrence1\service.edmx”. If your edmx file is in a custom location change the MetadataFilepath property, in Refrence.tt, to point to the correct path.&lt;/p&gt;  &lt;p&gt;- &lt;i&gt;There is no T4 for VB&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;We are looking to release our first preview of the VB template at the time of next refresh&lt;/p&gt;  &lt;p&gt;- &lt;i&gt;There is no support for spatial&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Spatial support will be included at end of January refresh&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thanks&lt;/p&gt;  &lt;p&gt;Ahmed Moustafa&lt;/p&gt;  &lt;p&gt;Program Manager&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10258643" width="1" height="1"&gt;</description></item><item><title>Using Geospatial Data</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/10/17/using-geospatial-data.aspx</link><pubDate>Tue, 18 Oct 2011 00:11:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10226705</guid><dc:creator>dpblogs</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10226705</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/10/17/using-geospatial-data.aspx#comments</comments><description>&lt;p&gt;This CTP of WCF Data Services adds support for geospatial data. The release allows use of all of the OData geospatial data types and the geo.distance() canonical function. This enables two key scenarios:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Read and write geospatial data (all types supported by Sql Server 2008 R2).
&lt;/li&gt;&lt;li&gt;Find all entities (i.e. coffee shops) near a location.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Before I illustrate use of these features, I'd like to mention some limitations of this CTP. First, (and most significantly) WCF Data Services providers only support geospatial data with custom or reflection providers. You can't use Entity Framework at this time. OData will support geospatial data over EF as soon as there is an EF release that supports geospatial data.
&lt;/p&gt;&lt;p&gt;Second, this CTP does not allow null values in geospatial properties. Nulls will be added by RTM.
&lt;/p&gt;&lt;p&gt;OK, enough on what it doesn't do. Let's interact with some geospatial data!
&lt;/p&gt;&lt;h2&gt;Adding Geospatial Data to the Model
&lt;/h2&gt;&lt;p&gt;&lt;a href="https://gist.github.com/1293201"&gt;https://gist.github.com/1293201&lt;/a&gt; is a simple OData service which lets a user find people and businesses near them. I'll describe the key geospatial parts here.
&lt;/p&gt;&lt;p&gt;First, the entities each have a property of type GeometricPoint (one of the new geospatial types):
&lt;/p&gt;&lt;p&gt;[DataServiceKey(&lt;span style="color:#a31515"&gt;"BusinessId"&lt;/span&gt;)]&lt;br/&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;
		&lt;span style="color:blue"&gt;class&lt;/span&gt; Business&lt;br/&gt;{&lt;br/&gt;&lt;span style="color:blue"&gt;  public&lt;/span&gt;
		&lt;span style="color:blue"&gt;int&lt;/span&gt; BusinessId { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }&lt;br/&gt;
		&lt;span style="color:blue"&gt;public&lt;/span&gt;
		&lt;span style="color:blue"&gt;string&lt;/span&gt; Name { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }&lt;br/&gt;
		&lt;span style="color:blue"&gt;public&lt;/span&gt;
		&lt;span style="color:blue"&gt;string&lt;/span&gt; Description { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }&lt;br/&gt;
		&lt;span style="color:blue"&gt;public&lt;/span&gt; GeographicPoint Location { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;[DataServiceKey(&lt;span style="color:#a31515"&gt;"Username"&lt;/span&gt;)]&lt;br/&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;
		&lt;span style="color:blue"&gt;class&lt;/span&gt; User&lt;br/&gt;{&lt;br/&gt;
		&lt;span style="color:blue"&gt;public&lt;/span&gt; User()&lt;br/&gt;  {&lt;br/&gt;
		&lt;span style="color:blue"&gt;this&lt;/span&gt;.Friends = &lt;span style="color:blue"&gt;new&lt;/span&gt; List&amp;lt;User&amp;gt;();&lt;br/&gt;  }&lt;br/&gt;&lt;br/&gt;
		&lt;span style="color:blue"&gt;public&lt;/span&gt;
		&lt;span style="color:blue"&gt;string&lt;/span&gt; Username { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }&lt;br/&gt;
		&lt;span style="color:blue"&gt;public&lt;/span&gt; IList&amp;lt;User&amp;gt; Friends { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }&lt;br/&gt;
		&lt;span style="color:blue"&gt;public&lt;/span&gt; GeographicPoint LastKnownLocation { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }&lt;br/&gt;}
&lt;/p&gt;&lt;p&gt;To create sample data values for geospatial types, I use the GeographyFactory (the data creation API is likely to change before the RTM, but this correct for now):
&lt;/p&gt;&lt;p&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;
		&lt;span style="color:#2b91af"&gt;User&lt;/span&gt; { Username = &lt;span style="color:#a31515"&gt;"Chai"&lt;/span&gt;, LastKnownLocation = &lt;span style="color:#2b91af"&gt;GeographyFactory&lt;/span&gt;.Point(47.7035614013672, -122.329437255859) }
&lt;/p&gt;&lt;p&gt;Finally, geospatial data is only supported in V3 of the OData protocol:
&lt;/p&gt;&lt;p&gt;&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;void&lt;/span&gt; InitializeService(&lt;span style="color:#2b91af"&gt;DataServiceConfiguration&lt;/span&gt; config)&lt;br/&gt;{&lt;br/&gt;  config.DataServiceBehavior.MaxProtocolVersion = &lt;span style="color:#2b91af"&gt;DataServiceProtocolVersion&lt;/span&gt;.V3;&lt;br/&gt;}
&lt;/p&gt;&lt;p&gt;That's it. Geospatial data values are just primitive data values like any other. It requires as little effort to use them as it does to use a DateTime.
&lt;/p&gt;&lt;h2&gt;Writing the client
&lt;/h2&gt;&lt;p&gt;Just use Add Service Reference to codegen a client. Consuming geospatial data is no different than consuming any other V3 OData service.
&lt;/p&gt;&lt;h2&gt;Reading and writing geospatial values
&lt;/h2&gt;&lt;p&gt;There's nothing special about geospatial values. For example, to update your last known location, you would query for your User entity, set the value of its LastKnownLocation, and call SaveChanges().
&lt;/p&gt;&lt;h2&gt;Enabling geo.distance queries
&lt;/h2&gt;&lt;p&gt;This sample service is interesting because it allows users to find nearby friends and businesses. We want to write queries that filter or orderby geo.distance().
&lt;/p&gt;&lt;p&gt;Unfortunately, the October CTP does not include an in-memory implementation for distance. Computing distance on a round earth is complicated. You'll need to find a good implementation for this operation (Sql Server has such an implementation). Once you have it, you can use the following glue code to hook it up.
&lt;/p&gt;&lt;p&gt;&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;void&lt;/span&gt; InitializeService(DataServiceConfiguration config)&lt;br/&gt;{&lt;br/&gt;
		&lt;span style="color:green"&gt;// ...&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:green"&gt;  // Register my operations&lt;/span&gt;&lt;br/&gt;&lt;span style="color:green"&gt;
		&lt;/span&gt;SpatialOperations.Register(2.0, &lt;span style="color:blue"&gt;new&lt;/span&gt; MyOperations());&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style="color:blue"&gt;internal&lt;/span&gt;
		&lt;span style="color:blue"&gt;class&lt;/span&gt; MyOperations : SpatialOperations&lt;br/&gt;{&lt;br/&gt;
		&lt;span style="color:blue"&gt;public&lt;/span&gt;
		&lt;span style="color:blue"&gt;override&lt;/span&gt;
		&lt;span style="color:blue"&gt;double&lt;/span&gt; Distance(Geometry operand1, Geometry operand2)&lt;br/&gt;  {&lt;br/&gt;
		&lt;span style="color:green"&gt;// &lt;span style="color:darkblue"&gt;&lt;strong&gt;TODO: Put your code here.&lt;/strong&gt;&lt;/span&gt;&lt;br/&gt;&lt;/span&gt;
		&lt;span style="color:blue"&gt;throw&lt;/span&gt;
		&lt;span style="color:blue"&gt;new&lt;/span&gt;
		&lt;span style="color:darkblue"&gt;&lt;strong&gt;NotImplementedException&lt;/strong&gt;&lt;/span&gt;();&lt;br/&gt;  }&lt;br/&gt;&lt;br/&gt;
		&lt;span style="color:blue"&gt;public&lt;/span&gt;
		&lt;span style="color:blue"&gt;override&lt;/span&gt;
		&lt;span style="color:blue"&gt;double&lt;/span&gt; Distance(Geography operand1, Geography operand2)&lt;br/&gt;  {&lt;br/&gt;
		&lt;span style="color:green"&gt;// &lt;/span&gt;TODO: Put your code here.&lt;br/&gt;
		&lt;span style="color:blue"&gt;throw&lt;/span&gt;
		&lt;span style="color:blue"&gt;new&lt;/span&gt; NotImplementedException();&lt;br/&gt;  }&lt;br/&gt;}
&lt;/p&gt;&lt;h2&gt;Making a distance query
&lt;/h2&gt;&lt;p&gt;Now that you've got a service that supports geo.distance(), we want to query it. Here are a couple of queries we can run:
&lt;/p&gt;&lt;p&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; localStuff = &lt;span style="color:blue"&gt;new&lt;/span&gt;
		&lt;span style="color:#2b91af"&gt;LocalStuff&lt;/span&gt;(&lt;span style="color:blue"&gt;new&lt;/span&gt;
		&lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"http://localhost/LocalStuff.svc"&lt;/span&gt;, &lt;span style="color:#2b91af"&gt;UriKind&lt;/span&gt;.Absolute));&lt;br/&gt;&lt;br/&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; me = localStuff.Users.First(u =&amp;gt; u.Username == &lt;span style="color:#a31515"&gt;"Chang"&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; myNearbyFriends = me.Friends&lt;br/&gt;  .Where(friend =&amp;gt; friend.LastKnownLocation.Distance(me.LastKnownLocation) &amp;lt; 1000.0);&lt;br/&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; moviesNearMe = localStuff.Businesses&lt;br/&gt;  .Where(b =&amp;gt; b.Description.Contains(&lt;span style="color:#a31515"&gt;"movie"&lt;/span&gt;))&lt;br/&gt;  .OrderBy(b =&amp;gt; b.Location.Distance(me.LastKnownLocation))&lt;br/&gt;  .Take(3);
&lt;/p&gt;&lt;p&gt;Have fun with the new geospatial data features. Please provide any feedback on the OData.org mailing list.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10226705" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/WCF+Data+Services/">WCF Data Services</category><category domain="http://blogs.msdn.com/b/astoriateam/archive/tags/geospatial/">geospatial</category></item><item><title>Actions in WCF Data Services</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/10/17/actions-in-wcf-data-services.aspx</link><pubDate>Mon, 17 Oct 2011 23:03:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10226676</guid><dc:creator>dpblogs</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10226676</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/10/17/actions-in-wcf-data-services.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;&lt;font size="3"&gt;“Actions will provide a way to inject behaviors into an otherwise data-centric model without confusing the data aspects of the model, while still staying true to the resource oriented underpinnings of OData.&amp;quot;&lt;/font&gt;&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;The October 2011 CTP of WCF Data Services adds powerful, but incomplete support for &lt;a href="http://www.odata.org/blog/2011/10/7/actions-in-odata"&gt;Actions&lt;/a&gt;. The motivation behind Actions stems from wanting to advertise in an OData entry an invocable ‘Action’ that has a side-effect on the OData service. &lt;/p&gt;  &lt;p&gt;This statement is broad, but deliberately so; Actions have a lot of power. &lt;/p&gt;  &lt;h3&gt;Using WCF Data Services to Invoke an Action:&lt;/h3&gt;  &lt;p&gt;This release’s WCF Data Services client can invoke Actions that have no parameters with any return type (i.e. void, Feed, Entry, ComplexType, Collection of ComplexType, PrimitiveType or Collection of PrimitiveType. &lt;/p&gt;  &lt;p&gt;To invoke Actions you call either Execute(..) for void actions or Execute&amp;lt;T&amp;gt;(..) for everything else. For example:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;var checkedOut = ctx.Execute&amp;lt;bool&amp;gt;(      &lt;br /&gt;&amp;#160;&amp;#160; new Uri(“&lt;/font&gt;&lt;a href="http://server/service.svc/Movies(6)/Checkout"&gt;&lt;font face="Courier New"&gt;http://server/service.svc/Movies(6)/Checkout&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;”),      &lt;br /&gt;&amp;#160;&amp;#160; HttpMethod.Post,       &lt;br /&gt;&amp;#160;&amp;#160; true       &lt;br /&gt;).Single();&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Here the Execute&amp;lt;T&amp;gt; function takes the Uri of the Action you want to invoke, the HttpMethod to use (which in this case is Post because we are invoking a side-effecting action), and singleResult=true to indicate there is only one result (i.e. it is not a collection). The method returns a QueryOperationResponse&amp;lt;bool&amp;gt;, which implements IEnumerable&amp;lt;bool&amp;gt;, so we call Single() to get the lone boolean that is the result of invoking the action.&lt;/p&gt;  &lt;p&gt;&lt;font color="#a5a5a5"&gt;NOTE: Needing to specify singleResult=true is a temporary CTP only requirement, because in the CTP our deserialization code can’t automatically detect whether the result is a collection or single result.&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;A nice side-effect of this new feature is that you can now call ServiceOperations too, so long as you craft the full Uri (including any parameters) yourself. For example, the code below calls a ServiceOperation called GetMoviesByGenre that takes a single parameter called Genre and returns a Collection (or feed) of Movies using a Get: &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;var movies = ctx.Execute&amp;lt;Movie&amp;gt;(      &lt;br /&gt;&amp;#160;&amp;#160; new Uri(“&lt;/font&gt;&lt;a href="http://server/service.svc/GetMoviesByGenre?genre='Comedy'"&gt;&lt;font face="Courier New"&gt;http://server/service.svc/GetMoviesByGenre?genre=’Comedy’&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;”),      &lt;br /&gt;&amp;#160;&amp;#160; HttpMethod.Get,       &lt;br /&gt;&amp;#160;&amp;#160; true       &lt;br /&gt;);&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;foreach(var movie in movies) {      &lt;br /&gt;&amp;#160;&amp;#160; // do something       &lt;br /&gt;}&lt;/font&gt; &lt;/p&gt;  &lt;h4&gt;Coming Soon…&lt;/h4&gt;  &lt;p&gt;By RTM we plan to add full support for parameters, both for actions and service operations.&lt;/p&gt;  &lt;p&gt;The current plan is for a new BodyParameter class that could be used to specify Actions parameters like this:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;var checkedOutForAWeek = ctx.Execute&amp;lt;bool&amp;gt;(      &lt;br /&gt;&amp;#160;&amp;#160; new Uri(“&lt;/font&gt;&lt;a href="http://server/service.svc/Movies(6)/Checkout"&gt;&lt;font face="Courier New"&gt;http://server/service.svc/Movies(6)/Checkout&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;”),      &lt;br /&gt;&amp;#160;&amp;#160; HttpMethod.Post,       &lt;br /&gt;&amp;#160;&amp;#160; new BodyParameter(&amp;quot;noOfDays&amp;quot;, 7)       &lt;br /&gt;).Single();&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;And a new UriParameter class that could be used to specify ServiceOperation parameters too: &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;var movies = ctx.Execute&amp;lt;Movie&amp;gt;(      &lt;br /&gt;&amp;#160;&amp;#160; new Uri(&amp;quot;&lt;/font&gt;&lt;a href="http://server/service.svc/GetMoviesByGenre"&gt;&lt;font face="Courier New"&gt;http://server/service.svc/GetMoviesByGenre&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;quot;),      &lt;br /&gt;&amp;#160;&amp;#160; HttpMethod.Get,       &lt;br /&gt;&amp;#160;&amp;#160; new UriParameter(&amp;quot;genre&amp;quot;, &amp;quot;Comedy&amp;quot;)       &lt;br /&gt;);&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;Setting up a WCF Data Service with Actions:&lt;/h3&gt;  &lt;p&gt;Unfortunately, creating actions with WCF Data Services in this release is quite tricky because it requires a &lt;a href="http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx"&gt;completely Custom Data Service Provider&lt;/a&gt;, but we are striving to make this easy by RTM. &lt;/p&gt;  &lt;p&gt;This CTP’s WCF Data Services Server only supports one parameter (i.e. the binding parameter), again this will change by RTM. &lt;/p&gt;  &lt;p&gt;To get started with actions, first create a ServiceAction in your IDataServiceMetadataProvider2 implementation; something like this: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;ServiceAction checkout = new ServiceAction(        &lt;br /&gt;&amp;#160;&amp;#160; &amp;quot;Checkout&amp;quot;,         &lt;br /&gt;&amp;#160;&amp;#160; ResourceType.GetPrimitiveResourceType(typeof(bool)),         &lt;br /&gt;&amp;#160;&amp;#160; null,         &lt;br /&gt;&amp;#160;&amp;#160; new List&amp;lt;ServiceOperationParameter&amp;gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new ServiceOperationParameter(&amp;quot;movie&amp;quot;, movieResourceType)         &lt;br /&gt;&amp;#160;&amp;#160; },         &lt;br /&gt;&amp;#160;&amp;#160; true         &lt;br /&gt;);         &lt;br /&gt;checkout.SetReadOnly();         &lt;br /&gt;&lt;/font&gt;      &lt;br /&gt;ServiceAction currently derives from ServiceOperation, so you will need to add any ServiceActions that you create to the collection of ServiceOperations you expose via both IDataServiceMetadataProvider.ServiceOperations and IDataServiceMetadataProvider.TryResolveServiceOperation(..). Also because Data Services are locked down by default you will need to configure your service to expose your actions using SetServiceOperationAccessRule(..).&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;IDataServiceMetadataProvider2 also adds a new method to find actions possibly bound to a ResourceType instance, (i.e. to an individual Movie). This is so that when the WCF Data Service is serializing Entities it doesn’t need to walk over all the metadata to find Actions that might bind to a particular entity. Here is a naïve implementation, where _sop is a list of all ServiceOperations: &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;public IEnumerable&amp;lt;ServiceOperation&amp;gt; GetServiceOperationsByResourceType(ResourceType resourceType)      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160; return _sops.OfType&amp;lt;ServiceAction&amp;gt;()       &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;&amp;#160;&amp;#160;&amp;#160; .Where(a =&amp;gt; a.Parameters.Count &amp;gt; 0 &amp;amp;&amp;amp; a.Parameters.First().ParameterType == resourceType);       &lt;br /&gt;}&lt;/font&gt;     &lt;br /&gt;    &lt;br /&gt;Next implement IDataServiceQueryProvider2.IsServiceOperationAdvertisable(..) to tell Data Services whether an Action should be advertised on a particular entity: &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;public bool IsServiceOperationAdvertisable(      &lt;br /&gt;&amp;#160;&amp;#160; object resourceInstance,       &lt;br /&gt;&amp;#160;&amp;#160; ServiceOperation serviceOperation,       &lt;br /&gt;&amp;#160;&amp;#160; ref Microsoft.Data.OData.ODataOperation operationToSerialize       &lt;br /&gt;){       &lt;br /&gt;&amp;#160;&amp;#160; Movie m = resourceInstance as Movie;       &lt;br /&gt;&amp;#160;&amp;#160; if (m == null) return false;       &lt;br /&gt;&amp;#160;&amp;#160; var checkedOut = GetIsCheckedOut(m, HttpContext.Current.User);&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160; if (serviceOperation.Name == &amp;quot;Checkout&amp;quot; &amp;amp;&amp;amp; !checkedOut) return true;      &lt;br /&gt;&amp;#160;&amp;#160; else if (serviceOperation.Name == &amp;quot;Checkin&amp;quot; &amp;amp;&amp;amp; checkedOut) return true;       &lt;br /&gt;&amp;#160;&amp;#160; else return false;       &lt;br /&gt;}&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;Here resourceInstance is the instance that is being serialized to the client, serviceOperation is the ServiceAction that the server is considering advertising, and operationToSerialize is an OData-structure representing the action information that’ll be serialized if you return true (note you can change properties on this class if for example you want to override the title or target of the Action in the payload). &lt;/p&gt;  &lt;p&gt;As you can see, this code knows that only Movies have actions, and that it has only two actions; Checkin and Checkout. It calls an implementation-specific method to work out whether the current user has the current movie checked out and then uses this information to decide whether to advertise the Action. &lt;/p&gt;  &lt;p&gt;Next you need to implement IDataServiceUpdateProvider2.InvokeAction(..) so that when a client invokes the Action you actually do something: &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;public object InvokeServiceAction(object dataService, ServiceAction action, object[] parameters)      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160; if (action.Name == &amp;quot;Checkin&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Movie m = (parameters[0] as IQueryable&amp;lt;Movie&amp;gt;).SingleOrDefault();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return Checkin(m);       &lt;br /&gt;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160; else if (action.Name == &amp;quot;Checkout&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Movie m = (parameters[0] as IQueryable&amp;lt;Movie&amp;gt;).SingleOrDefault();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return Checkout(m);       &lt;br /&gt;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160; else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; throw new NotSupportedException();       &lt;br /&gt;}&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;As you can see, this code figures out which action is being invoked and then gets the binding parameter from the parameters collection. The binding parameter will be an unexecuted query (it is unexecuted because this gives a provider the opportunity to invoke an action without actually retrieving the parameter from the datasource, if indeed that is possible), so we extract the Movie by casting parameters[0] to IQueryable&amp;lt;Movie&amp;gt; and calling SingleOrDefault, and then we call the appropriate code for the action directly. &lt;/p&gt;  &lt;p&gt;And we are done… &lt;/p&gt;  &lt;p&gt;&lt;font color="#a5a5a5"&gt;&lt;strong&gt;WARNING:&lt;/strong&gt; This code will need to change by RTM so that Actions actually get invoked during IDataServiceUpdateProvider.SaveChanges(..). This will involve creating delegates and returning something that isn’t the actual results, but rather something from which you can get the results later. See &lt;/font&gt;&lt;a href="http://blogs.msdn.com/b/alexj/archive/2010/02/11/creating-a-data-service-provider-part-7-update.aspx"&gt;&lt;font color="#a5a5a5"&gt;this post on implementing IDataServiceUpdateProvider&lt;/font&gt;&lt;/a&gt;&lt;font color="#a5a5a5"&gt; for more context if you are interested.&lt;/font&gt; &lt;/p&gt;  &lt;h3&gt;Conclusion:&lt;/h3&gt;  &lt;p&gt;As you can see, Actions is a work in progress, and many things are likely to change. Even though it is a lot of work to implement actions with the CTP (mainly because you have to implement IDataServiceMetadataProvider2, IDataServiceQueryProvider2 and IDataServiceUpdateProvider2 from scratch), it’s worth trying because Actions opens up the world of behaviors to OData.&lt;/p&gt;  &lt;p&gt;Come RTM we expect the whole experience to be a lot better. &lt;/p&gt;  &lt;p&gt;Let me know if you have any questions.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/adjames"&gt;Alex James&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;     &lt;br /&gt;Program Manager     &lt;br /&gt;OData Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10226676" width="1" height="1"&gt;</description></item><item><title>Introducing the OData Library</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/10/14/introducing-the-odata-library.aspx</link><pubDate>Fri, 14 Oct 2011 17:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10225417</guid><dc:creator>dpblogs</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10225417</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/10/14/introducing-the-odata-library.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This blog talks about a new feature delivered in the WCF Data Services October CTP that can be downloaded &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27728"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;WCF Data Services&amp;rsquo; latest CTP includes a new stand-alone library for working directly with OData. The library makes public some underpinnings of WCF Data Services (the server and client library), and we made this library stand-alone to allow its use independent from WCF Data Services. The library provides a low-level implementation of some components needed to build an OData producer/consumer. Specifically, we focused on the core tasks of reading/writing OData from streams in the library&amp;rsquo;s first version, and in the future we hope to add more fundamental OData functionality (possibly OData Uri reading and writing). However, we haven&amp;rsquo;t made any final plans on what we will add, and we welcome your feedback.&lt;/p&gt;
&lt;p&gt;I want to take a minute to explain this library&amp;rsquo;s relation to the existing WCF Data Services products; this library doesn&amp;rsquo;t replace WCF Data Services. If you want a great end-to-end solution for creating and exposing your data via an OData endpoint, then the WCF Data Services server library is (and will continue to be) the way to go. If you want a great OData Feed-consuming client with auxiliary support, like code generation and LINQ translation, then WCF Data Services&amp;rsquo; client library is still your best bet. However, we also recognize that people are exploring creative possibilities with OData, and to help them build their own solutions from scratch we made the components we use as part of the WCF Data Services stack available as a stand-alone library.&lt;/p&gt;
&lt;p&gt;We have published the OData library&amp;rsquo;s latest source code for the on codeplex (&lt;a href="http://odata.codeplex.com"&gt;http://odata.codeplex.com&lt;/a&gt;) as shared source for developers on .NET and other platforms&lt;/p&gt;
&lt;p&gt;The CodePlex source code includes the samples that I have attached to this blog post, and I&amp;rsquo;ll walk through a couple of those samples to illustrate reading and writing OData.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Writing a Single Entity&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To hide the library&amp;rsquo;s details of stream-reading/writing the OData Library uses an abstraction called a Message, which consists of stream and header interfaces (IODataRequestMessage, IODataResponseMessage). The example below walks through the basics of single-entry writing using an implementation of the messages that work over HTTPClient (this implementation is available in the samples project).&lt;/p&gt;
&lt;p&gt;The library uses a class called the ODataMessageWriter to write the actual body of a single ODataMessage (request or response). The ODataMessageWriter has a bunch of methods on it that can be used for writing small non-streaming payloads, such as single properties or individual complex-type values. For larger payloads (such as entities and collections of entities) the ODataMessageWriter has methods that create streaming writers for each payload type. The example shows how to use the ODataMessageWriter methods to create an ODataEntryWriter that can be used to write a single OData entry.&lt;/p&gt;
&lt;p&gt;Finally, the sample goes on to use the ODataEntryWriter to write a single Customer entry along with four primitive properties and two deferred links. The samples project includes a few samples that show how to write an expanded navigation link as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Writing Full Sample&lt;/strong&gt;&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum1"&gt; 1:&lt;/span&gt; HTTPClientRequestMessage message = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; HTTPClientRequestMessage(uri);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum2"&gt; 2:&lt;/span&gt; message.SetHeader(&lt;span style="color: #006080;"&gt;"Accept"&lt;/span&gt;, formatKind == ODataFormat.Json ? &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #006080;"&gt;"application/json"&lt;/span&gt; : &lt;span style="color: #006080;"&gt;"application/atom+xml"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum3"&gt; 3:&lt;/span&gt; message.Method = HttpMethod.Post;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum4"&gt; 4:&lt;/span&gt; message.SetHeader(&lt;span style="color: #006080;"&gt;"MaxDataServiceVersion"&lt;/span&gt;, maxVersion.ToHeaderValue());&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum5"&gt; 5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum6"&gt; 6:&lt;/span&gt; &lt;span style="color: #008000;"&gt;// create the writer, indent for readability of the examples.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum7"&gt; 7:&lt;/span&gt; ODataMessageWriterSettings writerSettings = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataMessageWriterSettings() { &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum8"&gt; 8:&lt;/span&gt;     Indent = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;,             &lt;span style="color: #008000;"&gt;//pretty printing&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum9"&gt; 9:&lt;/span&gt;     CheckCharacters = &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;,   &lt;span style="color: #008000;"&gt;//sets this flag on the XmlWriter for ATOM&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum10"&gt; 10:&lt;/span&gt;     BaseUri = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(baseUri),&lt;span style="color: #008000;"&gt;//set the base uri to use in relative links&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum11"&gt; 11:&lt;/span&gt;     Version = version &lt;span style="color: #008000;"&gt;//set the Odata version to use when writing the entry&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum12"&gt; 12:&lt;/span&gt; };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum13"&gt; 13:&lt;/span&gt; writerSettings.SetContentType(formatKind);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum14"&gt; 14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum15"&gt; 15:&lt;/span&gt; &lt;span style="color: #008000;"&gt;//create message writing for the message&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum16"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (ODataMessageWriter messageWriter = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataMessageWriter(message, writerSettings))&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum17"&gt; 17:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum18"&gt; 18:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//creates a streaming writer for a single entity&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum19"&gt; 19:&lt;/span&gt;     ODataWriter writer = messageWriter.CreateODataEntryWriter(); &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum20"&gt; 20:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum21"&gt; 21:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// start the entry&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum22"&gt; 22:&lt;/span&gt;     writer.WriteStart(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataEntry()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum23"&gt; 23:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum24"&gt; 24:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// the edit link is relative to the &lt;br /&gt; //baseUri set on the writer in the case&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum25"&gt; 25:&lt;/span&gt;         EditLink = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"/Customers('"&lt;/span&gt; + &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataSource.Customers.First().CustomerID +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #006080;"&gt;"')"&lt;/span&gt;, UriKind.Relative),&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum26"&gt; 26:&lt;/span&gt;       Id = &lt;span style="color: #006080;"&gt;"Customers('"&lt;/span&gt; + dataSource.Customers.First().CustomerID + &lt;span style="color: #006080;"&gt;"')"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum27"&gt; 27:&lt;/span&gt;         TypeName = &lt;span style="color: #006080;"&gt;"NORTHWNDModel.Customer"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum28"&gt; 28:&lt;/span&gt;         Properties = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;ODataProperty&amp;gt;(){&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum29"&gt; 29:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataProperty(){ Name = &lt;span style="color: #006080;"&gt;"CustomerID"&lt;/span&gt;, Value = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataSource.Customers.First().CustomerID },&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum30"&gt; 30:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataProperty(){ Name = &lt;span style="color: #006080;"&gt;"CompanyName"&lt;/span&gt;, Value = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataSource.Customers.First().CompanyName },&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum31"&gt; 31:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataProperty(){ Name = &lt;span style="color: #006080;"&gt;"ContactName"&lt;/span&gt;, Value = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataSource.Customers.First().ContactName },&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum32"&gt; 32:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataProperty(){ Name = &lt;span style="color: #006080;"&gt;"ContactTitle"&lt;/span&gt;, Value = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataSource.Customers.First().ContactTitle }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum33"&gt; 33:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum34"&gt; 34:&lt;/span&gt;     });&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum35"&gt; 35:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum36"&gt; 36:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//create a non-expanded link for the orders navigation property&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum37"&gt; 37:&lt;/span&gt;     writer.WriteStart(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataNavigationLink()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum38"&gt; 38:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum39"&gt; 39:&lt;/span&gt;         IsCollection = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum40"&gt; 40:&lt;/span&gt;         Name = &lt;span style="color: #006080;"&gt;"Orders"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum41"&gt; 41:&lt;/span&gt;         Url = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"http://microsoft.com/Customer("&lt;/span&gt; + &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataSource.Customers.First().CustomerID + &lt;span style="color: #006080;"&gt;")/Orders"&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum42"&gt; 42:&lt;/span&gt;     });&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum43"&gt; 43:&lt;/span&gt;     writer.WriteEnd(); &lt;span style="color: #008000;"&gt;//ends the orders link&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum44"&gt; 44:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum45"&gt; 45:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//create a non-expanded link for the employees navigation property&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum46"&gt; 46:&lt;/span&gt;     writer.WriteStart(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataNavigationLink()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum47"&gt; 47:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum48"&gt; 48:&lt;/span&gt;         IsCollection = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum49"&gt; 49:&lt;/span&gt;         Name = &lt;span style="color: #006080;"&gt;"Employees"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum50"&gt; 50:&lt;/span&gt;         Url = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum51"&gt; 51:&lt;/span&gt;             &lt;span style="color: #006080;"&gt;"http://microsoft.com/Customer("&lt;/span&gt; + &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataSource.Customers.First().CustomerID + &lt;span style="color: #006080;"&gt;")/Employees"&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum52"&gt; 52:&lt;/span&gt;     });&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum53"&gt; 53:&lt;/span&gt;     writer.WriteEnd(); &lt;span style="color: #008000;"&gt;//ends the Employees link&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum54"&gt; 54:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum55"&gt; 55:&lt;/span&gt;     writer.WriteEnd(); &lt;span style="color: #008000;"&gt;//tells the writer we are done writing the entity&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum56"&gt; 56:&lt;/span&gt;     writer.Flush(); &lt;span style="color: #008000;"&gt;//always flush at the end&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum57"&gt; 57:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Reading a Single Entity&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s look at an example that shows OData deserialization via the library. The example method below demonstrates how to issue a request to the Netflix OData feed for the set of Genres and parse the response.&lt;/p&gt;
&lt;p&gt;The example below makes use of the same ODataMessage classes as the previous example (the HTTPClientMessage), but first creates an HTTPClientRequestMessage that targets the Genres URL for the OData Netflix feeds, and then executes the request to get an HTTPClientResponseMessage that represents the response returned by the Netflix services. For readability, the example just outputs the data in the response to a text file afterwards.&lt;/p&gt;
&lt;p&gt;The example below uses an IEdmModel not used in the writer example above. When the ODataMessageReader is created an IEdmModel is passed in as a parameter &amp;ndash; the IEdmModel is essentially an in-memory representation of the metadata about the service that is exposed via the $metadata url. For a client component the easiest way to create the IEdmModel is to use the ReadMetadata method in the OData Library that creates an in-memory IEdmModel by parsing a $metadata document from the server. For a server, you would generally use the APIs included in the Edm Library (Microsoft.Edm.dll) to craft a model. Providing a model for OData parsing provides key benefits:&lt;/p&gt;
&lt;p&gt;o The reader will validate that the entities and properties in the documents being parsed conform to the model specified&lt;/p&gt;
&lt;p&gt;o Parsing is done with full type fidelity (i.e. that wire types are converted to the model types when parsed); this is especially important when parsing JSON because the JSON format only preserves 4 types and the OData protocol supports many more. There are configuration options to change how this is done, but I won&amp;rsquo;t discuss them here for space reasons.&lt;/p&gt;
&lt;p&gt;o If the service defines feed customizations, the model contains their definitions and the readers (and writers) will only know to apply them correctly if provided a model.&lt;/p&gt;
&lt;p&gt;o JSON can only be parsed when a model is provided (this is a limitation of the library and we may add JSON parsing without a model at some point in the future). ATOM parsing without a model is supported.&lt;/p&gt;
&lt;p&gt;In the example below an ODataFeedReader is created out of the ResponseMessageReader to read the contents of the response stream. The reader works like the XmlReader in the System.XML library, with which many of you will be familiar. Calling the Read() method moves the reader through the document, and each time Read() is called the reader changes to a specific state that depends on what the reader is currently reading, which is represented by an &amp;ldquo;Item&amp;rdquo;. For instance, when the reader reads an entry in the feed, it will go to the StartEntry state, and the Item on the reader will be the ODataEntry being read &amp;ndash;there are similar states for Feeds and Links. Importantly, when the reader is in a start state (StartEntry, StartFeed, StartLink, etc) the reader will have an Item it has created to hold the Entry/Feed/Link that it is reading, but the Item will be mostly empty because the reader has not actually read it yet. It&amp;rsquo;s only when the reader gets to the end states (EndEntry, EndFeed, EndLink) that the Item will be fully populated with data.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum1"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; ExecuteNetflixRequest(IEdmModel model, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; fileName)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum2"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum3"&gt; 3:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//we are going to create a GET request to the OData Netflix Catalog&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum4"&gt; 4:&lt;/span&gt;     HTTPClientRequestMessage message = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; HTTPClientRequestMessage(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #006080;"&gt;"http://odata.netflix.com/v2/Catalog/Genres"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum5"&gt; 5:&lt;/span&gt;     message.SetHeader(&lt;span style="color: #006080;"&gt;"Accept"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"application/json"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum6"&gt; 6:&lt;/span&gt;     message.SetHeader(&lt;span style="color: #006080;"&gt;"DataServiceVersion"&lt;/span&gt;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ODataUtils.ODataVersionToString(ODataVersion.V2));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum7"&gt; 7:&lt;/span&gt;     message.SetHeader(&lt;span style="color: #006080;"&gt;"MaxDataServiceVersion"&lt;/span&gt;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ODataUtils.ODataVersionToString(ODataVersion.V2));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum8"&gt; 8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum9"&gt; 9:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//create a text file to write the response to and create a textwriter&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum10"&gt; 10:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; filePath = fileName;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum11"&gt; 11:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (StreamWriter outputWriter = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StreamWriter(filePath))&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum12"&gt; 12:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum13"&gt; 13:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;//use an indented text writer for readability&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum14"&gt; 14:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; IndentedTextWriter(outputWriter, &lt;span style="color: #006080;"&gt;" "&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum15"&gt; 15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum16"&gt; 16:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;//issue the request and get the response as an ODataMessage. &lt;br /&gt; //Create an ODataMessageReader over the response &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum17"&gt; 17:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;//we will use the model when creating the reader &lt;br /&gt; //as this will tell the library to validate when parsing&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum18"&gt; 18:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (ODataMessageReader messageReader = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataMessageReader(message.GetResponse(), &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum19"&gt; 19:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ODataMessageReaderSettings(), model))&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum20"&gt; 20:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum21"&gt; 21:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//create a feed reader &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum22"&gt; 22:&lt;/span&gt;             ODataReader reader = messageReader.CreateODataFeedReader();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum23"&gt; 23:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; (reader.Read())&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum24"&gt; 24:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum25"&gt; 25:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt; (reader.State)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum26"&gt; 26:&lt;/span&gt;                 {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum27"&gt; 27:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; ODataReaderState.FeedStart: &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum28"&gt; 28:&lt;/span&gt;                         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum29"&gt; 29:&lt;/span&gt;                             &lt;span style="color: #008000;"&gt;//this is just the beginning of the feed, &lt;br /&gt; //data will not be parsed yet&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum30"&gt; 30:&lt;/span&gt;                             ODataFeed feed = (ODataFeed)reader.Item;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum31"&gt; 31:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(&lt;span style="color: #006080;"&gt;"ODataFeed:"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum32"&gt; 32:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.Indent++;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum33"&gt; 33:&lt;/span&gt;                         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum34"&gt; 34:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum35"&gt; 35:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum36"&gt; 36:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum37"&gt; 37:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; ODataReaderState.FeedEnd:&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum38"&gt; 38:&lt;/span&gt;                         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;p&gt;&lt;span style="color: #606060;" id="lnum39"&gt; 39:&lt;/span&gt; &lt;span style="color: #008000;"&gt;//this is the end of feed state. &lt;br /&gt; //The entire message &lt;br /&gt; //&lt;/span&gt;&lt;span style="color: #008000;"&gt;has been read at this point&lt;/span&gt;&lt;/p&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum40"&gt; 40:&lt;/span&gt;                             ODataFeed feed = (ODataFeed)reader.Item;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum41"&gt; 41:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (feed.Count != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum42"&gt; 42:&lt;/span&gt;                             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum43"&gt; 43:&lt;/span&gt;                                 &lt;span style="color: #008000;"&gt;//if there is an inlinecount value&lt;br /&gt; // write the value out&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum44"&gt; 44:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(&lt;span style="color: #006080;"&gt;"Count: "&lt;/span&gt; + &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; feed.Count.ToString());&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum45"&gt; 45:&lt;/span&gt;                             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum46"&gt; 46:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (feed.NextPageLink != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum47"&gt; 47:&lt;/span&gt;                             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum48"&gt; 48:&lt;/span&gt;                                 &lt;span style="color: #008000;"&gt;//if there is a next link &lt;br /&gt; //write that link as well&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum49"&gt; 49:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(&lt;span style="color: #006080;"&gt;"NextPageLink: "&lt;/span&gt; + &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; feed.NextPageLink.AbsoluteUri);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum50"&gt; 50:&lt;/span&gt;                             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum51"&gt; 51:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum52"&gt; 52:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.Indent--;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum53"&gt; 53:&lt;/span&gt;                         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum54"&gt; 54:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum55"&gt; 55:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum56"&gt; 56:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum57"&gt; 57:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; ODataReaderState.EntryStart:&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum58"&gt; 58:&lt;/span&gt;                         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum59"&gt; 59:&lt;/span&gt;                             &lt;span style="color: #008000;"&gt;//this is just the start of the entry. &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum60"&gt; 60:&lt;/span&gt;                             &lt;span style="color: #008000;"&gt;//Properties of the entity will not be parsed yet&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum61"&gt; 61:&lt;/span&gt;                             ODataEntry entry = (ODataEntry)reader.Item;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum62"&gt; 62:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(&lt;span style="color: #006080;"&gt;"ODataEntry:"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum63"&gt; 63:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.Indent++;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum64"&gt; 64:&lt;/span&gt;                         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum65"&gt; 65:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum66"&gt; 66:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum67"&gt; 67:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum68"&gt; 68:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; ODataReaderState.EntryEnd:&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum69"&gt; 69:&lt;/span&gt;                         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum70"&gt; 70:&lt;/span&gt;                             &lt;span style="color: #008000;"&gt;//at the point the whole entry has been read&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum71"&gt; 71:&lt;/span&gt;                             &lt;span style="color: #008000;"&gt;//and the properties of the entity are available&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum72"&gt; 72:&lt;/span&gt;                             ODataEntry entry = (ODataEntry)reader.Item;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum73"&gt; 73:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(&lt;span style="color: #006080;"&gt;"TypeName: "&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + (entry.TypeName ?? &lt;span style="color: #006080;"&gt;"&amp;lt;null&amp;gt;"&lt;/span&gt;));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum74"&gt; 74:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(&lt;span style="color: #006080;"&gt;"Id: "&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + (entry.Id ?? &lt;span style="color: #006080;"&gt;"&amp;lt;null&amp;gt;"&lt;/span&gt;));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum75"&gt; 75:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (entry.ReadLink != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum76"&gt; 76:&lt;/span&gt;                             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum77"&gt; 77:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(&lt;span style="color: #006080;"&gt;"ReadLink: "&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + entry.ReadLink.AbsoluteUri);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum78"&gt; 78:&lt;/span&gt;                             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum79"&gt; 79:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum80"&gt; 80:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (entry.EditLink != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum81"&gt; 81:&lt;/span&gt;                             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum82"&gt; 82:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(&lt;span style="color: #006080;"&gt;"EditLink: "&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + entry.EditLink.AbsoluteUri);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum83"&gt; 83:&lt;/span&gt;                             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum84"&gt; 84:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum85"&gt; 85:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (entry.MediaResource != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum86"&gt; 86:&lt;/span&gt;                             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum87"&gt; 87:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.Write(&lt;span style="color: #006080;"&gt;"MediaResource: "&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum88"&gt; 88:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.WriteValue(entry.MediaResource);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum89"&gt; 89:&lt;/span&gt;                             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum90"&gt; 90:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum91"&gt; 91:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.WriteProperties(entry.Properties);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum92"&gt; 92:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum93"&gt; 93:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.Indent--;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum94"&gt; 94:&lt;/span&gt;                         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum95"&gt; 95:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum96"&gt; 96:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum97"&gt; 97:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum98"&gt; 98:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; ODataReaderState.NavigationLinkStart:&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum99"&gt; 99:&lt;/span&gt;                         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum100"&gt; 100:&lt;/span&gt;                             &lt;span style="color: #008000;"&gt;//navigation links have their own states. &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum101"&gt; 101:&lt;/span&gt;                             &lt;span style="color: #008000;"&gt;//This could be an expanded link and include &lt;br /&gt; //an entire expanded entry or feed.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum102"&gt; 102:&lt;/span&gt;                             ODataNavigationLink navigationLink = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ODataNavigationLink)reader.Item;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum103"&gt; 103:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(navigationLink.Name &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;span style="color: #006080;"&gt;": ODataNavigationLink: "&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum104"&gt; 104:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.Indent++;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum105"&gt; 105:&lt;/span&gt;                         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum106"&gt; 106:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum107"&gt; 107:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum108"&gt; 108:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum109"&gt; 109:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; ODataReaderState.NavigationLinkEnd:&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum110"&gt; 110:&lt;/span&gt;                         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum111"&gt; 111:&lt;/span&gt;                             ODataNavigationLink navigationLink = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ODataNavigationLink)reader.Item;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum112"&gt; 112:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.WriteLine(&lt;span style="color: #006080;"&gt;"Url: "&lt;/span&gt; + &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum113"&gt; 113:&lt;/span&gt;                                 (navigationLink.Url == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt; ? &lt;span style="color: #006080;"&gt;"&amp;lt;null&amp;gt;"&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : navigationLink.Url.AbsoluteUri));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum114"&gt; 114:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.writer.Indent--;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum115"&gt; 115:&lt;/span&gt;                         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum116"&gt; 116:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum117"&gt; 117:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum118"&gt; 118:&lt;/span&gt;                 }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum119"&gt; 119:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum120"&gt; 120:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum121"&gt; 121:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum122"&gt; 122:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This is a quick introduction to the new OData Library included in this CTP. The post&amp;rsquo;s attached samples walk through the basics of OData feed creation and consumption via the library. We welcome any feedback you have on the library so don&amp;rsquo;t hesitate to contact us.&lt;/p&gt;
&lt;p&gt;Shayne Burgess &lt;br /&gt;Program Manager &amp;ndash; OData Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10225417" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-22-54-17/ODataLib.Samples.zip" length="1422774" type="application/octet-stream" /></item><item><title>Vocabularies in WCF Data Services</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/10/13/vocabularies-in-wcf-data-services.aspx</link><pubDate>Fri, 14 Oct 2011 00:42:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10224991</guid><dc:creator>dpblogs</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10224991</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/10/13/vocabularies-in-wcf-data-services.aspx#comments</comments><description>&lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;One new feature in &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27728"&gt;WCF Data Services October 2011 CTP&lt;/a&gt;&amp;#160; is Vocabularies. You can learn more about vocabularies and how they are supported in OData &lt;a href="http://www.odata.org/blog/2011/10/14/vocabularies-in-odata"&gt;here&lt;/a&gt;. In a nutshell, a vocabulary is a namespace containing terms where each term is a named metadata extension for an OData service. In this post, I’ll explain how to use this feature to produce an OData service extended with vocabularies, give an example of how to consume annotated metadata on the client side, and finally give some examples of annotations supported in the CTP.&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal" align="justify"&gt;Following are a few example uses which might leverage vocabularies:&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal" align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal" align="justify"&gt;Validation metadata may be invented, such that a service may describe valid ranges, value lists, expressions, etc. for properties of entity types.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal" align="justify"&gt;Visualization metadata may be defined to support generic browsing and visualization of data published via OData.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal" align="justify"&gt;Adaptations of micro formats or RDF vocabularies may be defined in terms of vocabularies to enable bridging and integration between OData Services and other linked data and semantic web technologies&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h1 style="line-height: 16pt; margin: 24pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 14pt" color="#365f91"&gt;&lt;font style="font-weight: bold"&gt;Applying Annotations to Data Service&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h1&gt;  &lt;p style="line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; mso-add-space: auto; mso-list: l1 level1 lfo1" class="MsoListParagraphCxSpFirst"&gt;In the WCF Data Services October CTP it’s possible to apply annotations to a data service and produce a $metadata endpoint which is extended by vocabularies. Let’s look at how to achieve this in this new version of the WCF Data Services.&lt;/p&gt;  &lt;p style="line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; mso-add-space: auto; mso-list: l1 level1 lfo1" class="MsoListParagraphCxSpMiddle"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; mso-add-space: auto; mso-list: l1 level1 lfo1" class="MsoListParagraphCxSpLast"&gt;Applying annotations to a data service is a two-step process:&lt;/p&gt;  &lt;p style="line-height: 13pt; text-indent: -0.25in; margin: 0in 0in 6pt 51.85pt; mso-list: l0 level2 lfo2" class="ppBulletList"&gt;&lt;span style="font-family: ; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Symbol"&gt;·&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Author an annotations file&lt;/p&gt;  &lt;p style="line-height: 13pt; text-indent: -0.25in; margin: 0in 0in 6pt 51.85pt; mso-list: l0 level2 lfo2" class="ppBulletList"&gt;&lt;span style="font-family: ; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Symbol"&gt;·&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Configure the data service to use produce an annotated $metadata endpoint&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;Let’s take a closer look at these steps through a simple scenario. Imagine the following simple model of a Person entity shown in CSDL:&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpFirst"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Schema &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;xmlns&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://schemas.microsoft.com/ado/2009/11/edm&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Namespace&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;VocabSample&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Using &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;NamespaceUri&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://vocabularies.odata.org/Validation&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Alias&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Vocabulary0&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntityType &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Person&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Key&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;PropertyRef &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;ID&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Key&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Property &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;ID&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Nullable&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Type&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Edm.Int32&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Property &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;FirstName&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Type&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Edm.String&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Property &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;LastName&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Type&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Edm.String&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Property &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Age&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Nullable&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Type&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Edm.Int32&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntityType&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntityContainer &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;SampleService&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;m:IsDefaultEntityContainer&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntitySet &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;People&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;EntityType&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;VocabSample.Person&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntityContainer&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; text-indent: 0in; margin: 7.5pt 3.75pt 7.5pt 0in; mso-add-space: auto; mso-list: l1 level1 lfo1; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoListParagraphCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Schema&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; mso-add-space: auto; mso-list: l1 level1 lfo1" class="MsoListParagraphCxSpMiddle"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; mso-add-space: auto; mso-list: l1 level1 lfo1" class="MsoListParagraphCxSpLast"&gt;Suppose, as the service owner, you want to extend the service metadata using a term which describes a valid range of values for certain properties(the Age property in this case). The first thing you’d need to do is to author an annotation file targeting your EDM. &lt;/p&gt;  &lt;h2 style="line-height: 15pt; margin: 10pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 13pt" color="#4f81bd"&gt;&lt;font style="font-weight: bold"&gt;Authoring an annotations file&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;To support vocabularies in EDM, we specified a new CSDL syntax used to apply terms. This makes it possible to apply vocabularies using familiar EDM constructs and existing reference mechanisms. An annotations file is an XML document that specifies how terms from one or more vocabularies are applied to a target model.&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;The following is an example of how to apply a “Validation” vocabulary’s “Range” term to a “Person.Age” property:&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 7.5pt 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Schema &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Namespace&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;VocabSample&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Alias&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;VocabSample&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;xmlns&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://schemas.microsoft.com/ado/2009/11/edm&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 7.5pt 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Using &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;NamespaceUri&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://vocabularies.odata.org/Validation&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Alias&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Validation&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 7.5pt 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Annotations &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Target&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;VocabSample.Person.Age&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 7.5pt 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;TypeAnnotation &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Term&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Validation.Range&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 7.5pt 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;PropertyValue &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Min&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Decimal&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;16&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 7.5pt 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;PropertyValue &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Max&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Decimal&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;90&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 7.5pt 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;TypeAnnotation&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 7.5pt 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 7.5pt 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Schema&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; background: white; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;The annotations file is a CSDL which uses the new annotation syntax. The Target attribute of &amp;lt;Annotations&amp;gt; specifies that the annotation is being applied to the Person entity’s Age property.. The Term attribute of the &amp;lt;TypeAnnotation&amp;gt; specifies that the term being applied is called “Range”. &lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&amp;lt;PropertyValue&amp;gt; elements set the values for the two properties of the Range term. The &lt;/span&gt;“Validation” identifier used to qualify the term name in the annotations is an alias for the globally unique namespace, specified by NamespaceUri=&amp;quot;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;http://vocabularies.odata.org/Validation&lt;/span&gt;&amp;quot;. &lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;The next step is to configure the data service to use the annotations and to produce an extended $metadata endpoint.&lt;/p&gt;  &lt;h2 style="line-height: 15pt; margin: 10pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 13pt" color="#4f81bd"&gt;&lt;font style="font-weight: bold"&gt;Configuring the data service&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;In the October 2011 CTP of WCF Data Services, we added the following property to the DataServiceConfiguration class:&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCode"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Func&lt;/font&gt;&lt;/span&gt;&amp;lt;Microsoft.Data.Edm.IEdmModel, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IEnumerable&lt;/font&gt;&lt;/span&gt;&amp;lt;Microsoft.Data.Edm.IEdmModel&amp;gt;&amp;gt; AnnotationsBuilder&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Following is an example of the InitializeServer method that shows how to use the AnnotationsBuilder to configure the service to use the annotations:&lt;/span&gt;&lt;/p&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpFirst"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;static&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; InitializeService(&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;DataServiceConfiguration&lt;/font&gt;&lt;/span&gt; config)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;string&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt; annotationsFile = &lt;span style="color: "&gt;&lt;font color="#a31515"&gt;@&amp;quot;D:\Vocabularies\Annotations\Annotations.xml&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;config.SetEntitySetAccessRule(&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;&amp;quot;People&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;EntitySetRights&lt;/font&gt;&lt;/span&gt;.AllRead);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; config.DataServiceBehavior.MaxProtocolVersion = &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;DataServiceProtocolVersion&lt;/font&gt;&lt;/span&gt;.V3;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; config.AnnotationsBuilder = (model) =&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IEdmModel&lt;/font&gt;&lt;/span&gt; annotationsmodel;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IEnumerable&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;EdmError&lt;/font&gt;&lt;/span&gt;&amp;gt; errors;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; xmlreaders = &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;XmlReader&lt;/font&gt;&lt;/span&gt;[] { &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;XmlReader&lt;/font&gt;&lt;/span&gt;.Create(annotationsFile) };&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;bool&lt;/font&gt;&lt;/span&gt; parsed = &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;CsdlReader&lt;/font&gt;&lt;/span&gt;.TryParse(xmlreaders, &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;out&lt;/font&gt;&lt;/span&gt; annotationsmodel, &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;out&lt;/font&gt;&lt;/span&gt; errors, model);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; parsed ? &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IEdmModel&lt;/font&gt;&lt;/span&gt;[] { annotationsmodel } : &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpLast"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;That’s it! Running the service and navigating to the $metadata endpoint will result in the following payload:&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;?&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;xml &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;version&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;1.0&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;encoding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;UTF-8&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;?&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;edmx:Edmx &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;xmlns:edmx&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://schemas.microsoft.com/ado/2007/06/edmx&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Version&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;1.0&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;edmx:DataServices &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;xmlns:m&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices/metadata&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;m:MaxDataServiceVersion&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;3.0&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;m:DataServiceVersion&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;1.0&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Schema &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;xmlns&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://schemas.microsoft.com/ado/2009/11/edm&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Namespace&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;VocabSample&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Using &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;NamespaceUri&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://vocabularies.odata.org/Validation&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Alias&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Vocabulary0&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntityType &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Person&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Key&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;PropertyRef &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;ID&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Key&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Property &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;ID&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Nullable&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Type&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Edm.Int32&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Property &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;FirstName&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Type&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Edm.String&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Property &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;LastName&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Type&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Edm.String&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Property &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Age&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Nullable&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Type&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Edm.Int32&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntityType&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntityContainer &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;SampleService&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;m:IsDefaultEntityContainer&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntitySet &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;People&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;EntityType&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;VocabSample.Person&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;EntityContainer&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Annotations &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Target&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;VocabSample.Person.Age&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;TypeAnnotation &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Term&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Vocabulary0.Range&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;PropertyValue &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Decimal&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;16&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Property&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Min&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;PropertyValue &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#ff0000"&gt;Decimal&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;90&lt;/font&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Property&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Max&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;TypeAnnotation&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Schema&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;edmx:DataServices&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;edmx:Edmx&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: ; color: ; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;  &lt;h1 style="line-height: 16pt; margin: 24pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 14pt" color="#365f91"&gt;&lt;font style="font-weight: bold"&gt;Client Side&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h1&gt;  &lt;p style="line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; mso-list: l1 level2 lfo1" class="ppBodyText"&gt;On the client side, you can use System.Data.Edm to parse the metadata and extract the annotations. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;The example below illustrates how to get the vocabulary annotations applied to Person.Age:&lt;/p&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpFirst"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt" color="#008000"&gt;//GET service metadata&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;string&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt; metadata = GetMetadata(metadataUri); &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt" color="#008000"&gt;//Parse the metadata&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size: 10pt"&gt;IEdmModel&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt; annotatedModel;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size: 10pt"&gt;IEnumerable&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;EdmError&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;gt; errors;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size: 10pt"&gt;XmlReader&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; xmlReader = &lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;XmlReader&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;.Create(&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;StringReader&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;(metadata));&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;bool&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; parsed = &lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;EdmxReader&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;.TryParse(xmlReader, &lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;out&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; annotatedModel, &lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;out&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt; errors);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt" color="#008000"&gt;//Find the Age property of Person EntityType&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size: 10pt"&gt;IEdmProperty&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; age = &lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; (&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;EdmTypeKind&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;.Entity == annotatedModel.FindType(&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;VocabSample.Person&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;).TypeKind)&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;IEdmEntityType&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; person = (&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;IEdmEntityType&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;)annotatedModel.&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#2b91af"&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; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;FindType(&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;VocabSample.Person&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;age = person.FindProperty(&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;&amp;quot;Age&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt" color="#008000"&gt;//Find the vocabulary annotations applied to the Age property&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size: 10pt"&gt;IEnumerable&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#2b91af"&gt;IEdmVocabularyAnnotation&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&amp;gt; annotations = &lt;/span&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font style="font-size: 10pt"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt; (&lt;/span&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font style="font-size: 10pt"&gt; != age)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;annotations = age.VocabularyAnnotations(annotatedModel);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-font-family: consolas; mso-bidi-language: ar-sa; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpLast"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;You can get the name of the terms applied to the Age property as follows:&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpFirst"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;foreach&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt; (&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IEdmVocabularyAnnotation&lt;/font&gt;&lt;/span&gt; annotation &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;/span&gt; annotations)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt; (annotation.AnnotationKind == &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;EdmAnnotationKind&lt;/font&gt;&lt;/span&gt;.TermType)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;IEdmTypeAnnotation&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt; typeAnnotation = (&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IEdmTypeAnnotation&lt;/font&gt;&lt;/span&gt;)annotation;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#2b91af"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;Console&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;.WriteLine(typeAnnotation.Term.Name);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpLast"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;You can access the properties of a term as follows:&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpFirst"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 10pt"&gt;foreach&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; (&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;IEdmVocabularyAnnotation&lt;span style="color: "&gt;&amp;#160;&lt;/span&gt;annotation &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt; annotations)&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; (&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;annotation&lt;span style="color: "&gt;.AnnotationKind.Equals(&lt;/span&gt;EdmAnnotationKind&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;.TermType))&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;{ &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;IEdmTypeAnnotation&lt;span style="color: "&gt;&amp;#160;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-font-family: consolas"&gt;typeAnnotation &lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;= (&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;IEdmTypeAnnotation&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;)annotation;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; (&lt;/span&gt;&lt;span style="color: ; mso-bidi-font-family: consolas"&gt;typeAnnotation&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;.Term.Name == &lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;&amp;quot;Range&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;IEdmPropertyValueBinding&lt;span style="color: "&gt; min = &lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;IEdmPropertyValueBinding&lt;span style="color: "&gt; max = &lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;foreach&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; (&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; prop &lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: ; mso-bidi-font-family: consolas"&gt;typeAnnotation&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;.Properties)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; (prop.BoundProperty.Name == “&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;Min&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&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; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;min = prop;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;font face="Consolas"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;else&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt; (prop.BoundProperty.Name == &lt;/span&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font color="#a31515"&gt;&amp;quot;Max&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font style="font-size: 10pt"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&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; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;max = prop;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&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; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IEdmDecimalValue&lt;span style="color: "&gt; minVal = (&lt;/span&gt;IEdmDecimalValue&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;)min.Value;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Console&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;.WriteLine(minVal.Value);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IEdmDecimalValue&lt;span style="color: "&gt; maxValue = (&lt;/span&gt;IEdmDecimalValue&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;)max.Value;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Console&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 10pt"&gt;.WriteLine(maxValue.Value);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpLast"&gt;&lt;span style="color: ; mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;We will be focusing more on the completeness and usability of the client API in the upcoming releases.&lt;/p&gt;  &lt;h1 style="line-height: 16pt; margin: 24pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 14pt" color="#365f91"&gt;&lt;font style="font-weight: bold"&gt;Example Annotations&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h1&gt;  &lt;p style="line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; mso-list: l1 level2 lfo1" class="ppBodyText"&gt;In the example above, we looked at annotating a Property of an entity. In OData annotations are supported on several CSDL elements. In WCF Data Services October 2011 CTP, it’s possible to annotate the following in the following way assuming the service that is being annotated is the sample &lt;a href="http://services.odata.org/Northwind/Northwind.svc/$metadata"&gt;&lt;font color="#0000ff" face="Times New Roman"&gt;Northwind service&lt;/font&gt;&lt;/a&gt;:&lt;/p&gt;  &lt;h3 style="line-height: 13pt; margin: 10pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 11pt" color="#4f81bd"&gt;&lt;font style="font-weight: bold"&gt;EntityContainer&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpFirst"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Target&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;NorthwindEntities&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ValueAnnotation&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Term&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;Display.Title&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;String&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;All Entities&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpLast"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &amp;lt;/&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3 style="line-height: 13pt; margin: 10pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 11pt" color="#4f81bd"&gt;&lt;font style="font-weight: bold"&gt;EntitySet&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpFirst"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Target&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;Invoices&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ValueAnnotation&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Term&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;Display.Title&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;String&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;Order Invoices&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpLast"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt; &amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3 style="line-height: 13pt; margin: 10pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 11pt" color="#4f81bd"&gt;&lt;font style="font-weight: bold"&gt;EntityType&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpFirst"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Target&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;NorthwindModel.Employee&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TypeAnnotation&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Term&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;Contact.Person&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;PropertyValue&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Property&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;FirstName&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Path&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;FirstName&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;PropertyValue&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Property&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;LastName&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Path&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;LastName&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &amp;lt;/&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TypeAnnotation&lt;/font&gt;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpLast"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3 style="line-height: 13pt; margin: 10pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 11pt" color="#4f81bd"&gt;&lt;font style="font-weight: bold"&gt;Property&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpFirst"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Target&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;NorthwindModel.Employee.EmployeeID&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TypeAnnotation&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Term&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;Display.Hide&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpLast"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3 style="line-height: 13pt; margin: 10pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 11pt" color="#4f81bd"&gt;&lt;font style="font-weight: bold"&gt;NavigationProperty&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;div style="border-bottom: #d5d5d3 1pt solid; border-left: medium none; padding-bottom: 1pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; border-top: white 1pt solid; border-right: medium none; padding-top: 1pt; mso-border-top-alt: solid white .25pt; mso-border-bottom-alt: solid #d5d5d3 .25pt; mso-element: para-border-div"&gt;   &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpFirst"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Target&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;NorthwindModel.Customer.Orders&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 0pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpMiddle"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;#160; &amp;lt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ValueAnnotation&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Term&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;Display.Title&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;String&lt;/font&gt;&lt;/span&gt;=&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;Customer Orders&lt;span style="color: "&gt;&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="padding-bottom: 0in; line-height: 13pt; text-indent: 0in; margin: 0in 0in 6pt; padding-left: 0in; padding-right: 0in; background: #f7f7ff; padding-top: 0in; mso-add-space: auto; mso-list: l3 level2 lfo3" class="ppCodeCxSpLast"&gt;&lt;span style="mso-bidi-language: ar-sa"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 10pt"&gt;&amp;lt;/&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Annotations&lt;/font&gt;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h1 style="line-height: 16pt; margin: 24pt 0in 6pt"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size: 14pt" color="#365f91"&gt;&lt;font style="font-weight: bold"&gt;Summary&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h1&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;Vocabularies feature is a significant new feature that we added to Data Services. Vocabularies increase the expressiveness of OData metadata document to enable a broader spectrum of experiences. Clients and data providers can cooperate to enable richer experiences by enhancing OData metadata with vocabularies.&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 6pt" class="MsoNormal"&gt;As always, we are very interested in hearing your thoughts and feedback. &lt;/p&gt; &lt;span style="line-height: 13pt; font-family: ; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-bidi-language: en-us; mso-ansi-language: en-us; mso-fareast-language: en-us"&gt;   &lt;br style="page-break-before: always; mso-special-character: line-break" clear="all" /&gt;&lt;/span&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Turker Keskinpala&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Program Manager&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 13pt; margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;WCF Data Services/OData Team&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10224991" width="1" height="1"&gt;</description></item><item><title>Announcing WCF Data Services Oct 2011 CTP for .NET 4 and Silverlight 4</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/10/13/announcing-wcf-data-services-oct-2011-ctp-for-net-4-and-silverlight-4.aspx</link><pubDate>Thu, 13 Oct 2011 23:41:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10224975</guid><dc:creator>dpblogs</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10224975</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/10/13/announcing-wcf-data-services-oct-2011-ctp-for-net-4-and-silverlight-4.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’m very excited to announce the release of the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=230482&amp;amp;clcid=0x409"&gt;October 2011 CTP&lt;/a&gt; of the next version of WCF Data Services libraries. This release includes libraries for .NET 4 and Silverlight 4 with new client and server features in addition to those included in our last &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2010/10/26/announcing-wcf-data-services-oct-2010-ctp1-for-net4-amp-sl4.aspx"&gt;October 2010&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2011/03/09/announcing-wcf-data-services-march-2011-ctp2-for-net4-amp-sl4.aspx"&gt;March 2011&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2011/06/30/announcing-wcf-data-services-june-2011-ctp-for-net4-amp-sl4.aspx"&gt;June 2011&lt;/a&gt; CTPs. &lt;/p&gt;  &lt;p&gt;Below is a brief summary of the features available in this CTP. Subsequent blog posts will discuss each feature in more detail and provide examples of how to use each.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Actions:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The inability to kick-off a (non-CRUD) related server process via an OData hypermedia action was an omission somewhat mitigated by low-fidelity workarounds, such as modeling hypermedia actions as entities. Actions will provide an &lt;a href="http://en.wikipedia.org/wiki/Resource-oriented_architecture"&gt;ROA&lt;/a&gt;-underpinned means to inject behaviors into an otherwise data-centric model without obfuscating its data aspects, and (like navigation properties) will be advertised in the payload.&lt;/p&gt;  &lt;p&gt;This CTP supports invoking ServiceOperation via handcrafted URL parameters, and also enables invoking parameterless actions that can return void, a single object, or a collection of objects in JSON or ATOM format. &lt;/p&gt;  &lt;p&gt;Though this release contains the lower layers of Actions support, which enables custom OData providers to use them, it doesn’t yet enable Actions over EF-Provider out-of-box; a refresh of WCF Data Services succeeding the release of the next Entity/.NET Framework will enable this natively.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Spatial:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The ubiquity of location-aware devices demands a data type suited to communicating geospatial data, so this CTP delivers 16 new spatial OData primitives and some corresponding operations which data consumers can perform on spatial values in filter, select, and orderby clauses.&lt;/p&gt;  &lt;p&gt;Spatial primitives follow the &lt;a href="http://www.opengeospatial.org/standards/sfo"&gt;OGC’s Simple Features standard&lt;/a&gt;, but unlike other primitives, the associated operation set is extensible, which allows some servers to expose deep algorithms for powerful functionality while other servers expose only basic operations. Since the server advertises these advanced capabilities via the Actions feature, they’re discoverable by generic clients.&lt;/p&gt;  &lt;p&gt;This CTP allows addition of spatial type properties to models via both Reflection and Custom Service Providers (EF-based services don’t yet support spatial properties), and read/write support (in ATOM or JSON formats) for all spatial types supported by SQL Server 2008 R2. The release also enables querying for all entities ordered/filtered by distance to a location, with all code running server-side; i.e. find all coffee shops near me.&lt;/p&gt;  &lt;p&gt;Though this release contains the lower layers of Spatial support, which enables custom OData providers to use them, it doesn’t yet enable Spatial properties over EF-based Services out-of-box; a refresh of WCF Data Services succeeding the release of the next Entity/.NET Framework will enable this natively.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Vocabularies:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Those from the Linked Data and RDF worlds will feel at home with Vocabularies, but for those unfamiliar with the idea, a Vocabulary is a collection of &lt;i&gt;terms&lt;/i&gt; sharing a namespace, and a term is a metadata extension with an optional value expression that’s applicable to arbitrary Entity Data Models (EDMs). Terms allow data producers to specify how data consumers can richly interpret and handle data. A simple vocabulary might indicate a property’s acceptable value range, whereas a complex vocabulary might specify how to convert an OData person entity into a vCard entity. &lt;/p&gt;  &lt;p&gt;This CTP allows data service authors to configure the service for annotation through annotation files and serve a $metadata endpoint enriched with terms. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;ODataLib:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The ODataLib .NET client and server libraries allow flexible low-level serialization/deserialization according to the &lt;a href="http://www.odata.org/developers/protocols"&gt;OData Protocol Specifications&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;With the exception of $batch, ODataLib now supports deserialization of all OData constructs in addition to the last CTP’s serialization support. Furthermore, ODataLib now ships with EdmLib, a new in-memory metadata system that makes it easy to build an EDM Model of a service for OData serialization/deserialization. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Frequently Asked Questions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Q1: What are the prerequisites?&lt;/p&gt;  &lt;p&gt;A1: See the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=230482&amp;amp;clcid=0x409"&gt;download center page&lt;/a&gt; for a list of prerequisites, supported operating systems, etc.&lt;/p&gt;  &lt;p&gt;Q2: Does this CTP install side-by-side with previously released CTPs (March &amp;amp; June) that are currently on my development machine? &lt;/p&gt;  &lt;p&gt;A2: No, Installation of this CTP will result in setup automatically uninstalling previously installed CTPs, if any are, installed on the machine.&lt;/p&gt;  &lt;p&gt;Q3: Does this CTP install side-by-side with the .NET 4 and Silverlight 4 versions that are currently on my development machine? &lt;/p&gt;  &lt;p&gt;A3: By in large this install is side-by-side with existing .NET4 and SL4 bits; however, that was not possible in all cases so some VS files will be modified by the CTP installer to enable the Add Service Reference gesture in Visual Studio 2010 to make use of the new features in this CTP. The files should be replaced to their original state during uninstall of this CTP. &lt;/p&gt;  &lt;p&gt;Q4: Does this CTP include support for Windows Phone 7?&lt;/p&gt;  &lt;p&gt;A: No, you can download the Windows Phone 7 SDK, which includes the OData client, from &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26648"&gt;here&lt;/a&gt;. The Windows Phone 7 client does not yet support new features (Spatial, Actions etc.)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Known Issues, Limitations, and Workarounds&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Incorrect reference to Data Services assembly in a project after adding WCF Data Services item template in Visual Studio Express:&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;After adding a WCF Data Services item template to a Data Services server project, the project will have a reference to System.Data.Services.dll from .NET Framework 4. You will need to remove that reference and replace it with a reference to &lt;b&gt;Microsoft.Data.Services.dll&lt;/b&gt; from the &lt;b&gt;bin\.NETFramework&lt;/b&gt; directory in the Data Services June October CTP installation directory (by default, it is at %programfiles%\Microsoft Data Services June 2011 CTP) and add references to Microsoft.Data.OData.dll and System.Spatial.dll.&lt;/p&gt;  &lt;hr align="center" size="2" width="100%" /&gt;  &lt;p&gt;&lt;i&gt;Using add service reference in an website project results in .NET Framework 4 client-side code&amp;#160; being generated instead of the expected October CTP 2011 code generation:&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Add service reference for website projects is not supported for this CTP. This issue should be resolved by next public release.&lt;/p&gt;  &lt;hr align="center" size="2" width="100%" /&gt;  &lt;p&gt;&lt;i&gt;Custom element annotation support in OData Library:&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;There is no support for custom element annotations in the OData Library for this CTP. This issue should be resolved by next public release.&lt;/p&gt;  &lt;hr align="center" size="2" width="100%" /&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;A service using the Entity Framework provider, POCO classes with proxy and a model that has decimal keys will result in an InvalidProgramException:&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;This is a known issue and will be resolved in the next release of Entity Framework.&lt;/p&gt;  &lt;hr align="left" size="2" width="100%" /&gt;  &lt;p&gt;&lt;i&gt;Spatial and non-standard coordinate systems:&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Geospatial values in Atom only support the default coordinate system, JSON has full coordinate system support. &lt;/p&gt;  &lt;hr align="center" size="2" width="100%" /&gt;  &lt;p&gt;&lt;i&gt;Support for Windows Phone 7:&lt;/i&gt;     &lt;br /&gt;The OData Windows Phone 7 client is included in the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27570"&gt;Windows Phone 7.1 SDK&lt;/a&gt; . The Windows Phone 7 client only supports features shipped as part of the .NET Framework 4 and does not support any OData V3 features included in this release.&lt;/p&gt;  &lt;hr align="center" size="2" width="100%" /&gt;  &lt;p&gt;&lt;i&gt;Support for Datajs client library:&lt;/i&gt;     &lt;br /&gt;The OData &lt;a href="http://datajs.codeplex.com/"&gt;Datajs library&lt;/a&gt; 7 client only supports features shipped as part of the .NET Framework 4 and does not support any OData V3 features included in this release.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Giving Feedback&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The following forum can be used to provide feedback on this CTP:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/threads"&gt;http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/threads&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We look forward to hearing your thoughts on the release!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Abhiram Chivukula&lt;/strong&gt;     &lt;br /&gt;Program Manager     &lt;br /&gt;WCF Data Services&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10224975" width="1" height="1"&gt;</description></item><item><title>OData Compression in Windows Phone 7.5 (Mango)</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/10/04/odata-compression-in-windows-phone-7-5-mango.aspx</link><pubDate>Tue, 04 Oct 2011 21:57:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10220052</guid><dc:creator>dpblogs</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10220052</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/10/04/odata-compression-in-windows-phone-7-5-mango.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;One of the most frequently requested features for OData is payload compression. We have added two events to DataServiceContext in the OData phone client included in the Windows Phone SDK 7.1 that enables you to work with compressed payloads:   &lt;br /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.data.services.client.dataservicecontext.writingrequest(v=VS.92).aspx"&gt;WritingRequest&lt;/a&gt;&lt;/b&gt; – occurs immediately before a request is sent&lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.data.services.client.dataservicecontext.readingresponse(v=VS.92).aspx"&gt;ReadingResponse&lt;/a&gt;&lt;/b&gt; – occurs immediately after a response is received&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now, let’s take a look at these in action. Here is a method that adds support for gzip compression for OData feeds in a Windows Phone app:&lt;/p&gt;  &lt;p&gt;using SharpCompress.Compressor;   &lt;br /&gt;using SharpCompress.Compressor.Deflate;&lt;/p&gt;  &lt;p&gt;private void EnableGZipResponses(DataServiceContext ctx)   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ctx.WritingRequest += new EventHandler&amp;lt;ReadingWritingHttpMessageEventArgs&amp;gt;(    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (_, args) =&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &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;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; args.Headers[&amp;quot;Accept-Encoding&amp;quot;] = &amp;quot;gzip&amp;quot;;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ctx.ReadingResponse += new EventHandler&amp;lt;ReadingWritingHttpMessageEventArgs&amp;gt;(   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (_, args) =&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &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;&amp;#160;&amp;#160;&amp;#160; if (args.Headers.ContainsKey(&amp;quot;Content-Encoding&amp;quot;) &amp;amp;&amp;amp;    &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;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; args.Headers[&amp;quot;Content-Encoding&amp;quot;].Contains(&amp;quot;gzip&amp;quot;))    &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;&amp;#160;&amp;#160;&amp;#160; {    &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;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; args.Content = new GZipStream(args.Content, CompressionMode.Decompress);    &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;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; );    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;This method registers two event handlers that make all of the client-side modifications to the message necessary to accept gzip compressed messages; just pass in your DataServiceContext. We’ll examine each event handler individually.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;The WritingRequest event handler&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Here we simply set the Accept-Encoding to gzip to inform the server that we can accept a gzip’d response. With this header set, the server will send us a gzip’d response, if it can.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;The ReadingResponse event handler&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The Content-Encoding header tells us how the server encoded the response body. We only modify the response body (in args.Content) when this header has been set to gzip. In this way, gzip-compressed content is decompressed with GZipStream, and everything else is just left as is.&lt;/p&gt;  &lt;p&gt;Unfortunately, GZipStream is not currently supported on Windows Phone. We must rely on a third-party library to perform decompression and so we have used the &lt;a href="http://sharpcompress.codeplex.com/"&gt;SharpCompress Library&lt;/a&gt;, which worked quite well.&amp;#160; If you download SharpCompress, you’ll get a zipped folder containing some libraries. Just add SharpCompress.WP7.dll to your project references, and you’ll be ready to use GZipStream on Windows Phone. If you’ve never added a reference before, check out &lt;a href="http://msdn.microsoft.com/en-us/library/wkze6zky(v=VS.100).aspx"&gt;this walkthrough&lt;/a&gt;. You can probably skip straight to the section called “To add a reference in Visual C#”. Browse to where you saved the SharpCompress.WP7.dll, and then add it to your project.&lt;/p&gt;  &lt;p&gt;Note that if we also wanted to send a compressed request (POST) to the data service, we could simply set the Content-Encoding header to gzip in the WritingRequest handler and compress the payload stream returned by the Content property.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Server-Side Configuration&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The client side changes we’ve discussed so far require that our server be configured to support message compression. If you are using IIS, check out these links to get compression set up: &lt;a href="http://technet.microsoft.com/en-us/library/cc782942(WS.10).aspx"&gt;IIS 6.0&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/library/cc753681(WS.10).aspx"&gt;IIS 7.0&lt;/a&gt;, or a more extensive &lt;a href="http://blogs.msdn.com/b/vivekkum/archive/2009/02/18/http-compression-in-iis-6-and-iis-7-using-service-account.aspx"&gt;guide for both&lt;/a&gt;. You should be compressing OData payloads as soon as your server is ready.&lt;/p&gt;  &lt;p&gt;Evan Czaplicki &amp;amp; Shayne Burgess   &lt;br /&gt;OData Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10220052" width="1" height="1"&gt;</description></item><item><title>Updated Item Templates for Microsoft Visual Studio 11 Express for Windows Developer Preview</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/09/15/updates-item-templates-for-microsoft-visual-studio-11-express-for-windows-developer-preview.aspx</link><pubDate>Thu, 15 Sep 2011 18:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10211914</guid><dc:creator>dpblogs</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10211914</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/09/15/updates-item-templates-for-microsoft-visual-studio-11-express-for-windows-developer-preview.aspx#comments</comments><description>&lt;p&gt;Microsoft recently released the developer preview of the next version Windows as well as a developer preview of Visual Studio 11 for building apps on the new version of Windows. Some of you may have noticed that the &amp;ldquo;New Item&amp;rdquo; template for creating a WCF Data Services isn't working correctly (this is pre-release &amp;ldquo;preview&amp;rdquo; software after all). We have created a fix for these templates that you can use to unblock creating a WCF Data Service. The details of apply the fix are below&amp;nbsp;&amp;ndash; keep in mind this version of Visual Studio is a preview release only and the fix should only be used with that version of Visual Studio and should not be applied to any other beta/RTM version of Visual Studio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Installation Instructions for Updates Templates:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1. Download and unzip the templates attached to this post.&lt;/p&gt;
&lt;p&gt;2. Install the new templates. There are 4 templates to install, and installing them simply requires that you copy the attached templates over the ones in the Visual Studio directory. The names of the templates and the location to copy them are in the table below (each location is relative to the base Visual Studio install directory).&lt;/p&gt;
&lt;blockquote&gt;
&lt;table style="width: 828px;" border="0" cellspacing="0" cellpadding="2" unselectable="on"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;&lt;strong&gt;Template&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" width="626"&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;AdoNetDataServiceCSharpWap.zip&lt;/td&gt;
&lt;td valign="top" width="626"&gt;&amp;lt;Program Files&amp;gt;\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Web\1033&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;AdoNetDataServiceVBWap.zip&lt;/td&gt;
&lt;td valign="top" width="626"&gt;&amp;lt;Program Files&amp;gt;\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\VisualBasic\Web\1033&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;AdoNetDataServiceCSharpWebsite.zip&lt;/td&gt;
&lt;td valign="top" width="626"&gt;&amp;lt;Program Files&amp;gt;\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\Web\CSharp\1033&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;AdoNetDataServiceVBWebsite.zip&lt;/td&gt;
&lt;td valign="top" width="626"&gt;&amp;lt;Program Files&amp;gt;\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\Web\VisualBasic\1033&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt;3. Update Visual Studio. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a. Close any active instances of Visual Studio 2011.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b. Open an elevated Visual&amp;nbsp;Studio 2011 Developer Command Prompt. You can find a tile for this from the start screen, right-click the tile, select the Advanced button and select Run as administrator.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c. In the developer command prompt enter the command &amp;ldquo;devenv /installvstemplates&amp;rdquo;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d. Wait for the command to complete and then start Visual Studio and the Item Templates should be working.&lt;/p&gt;
&lt;p&gt;If you have any comments or questions on using WCF Data Services in the developer preview of Visual Studio please don&amp;rsquo;t hesitate to send them to us.&lt;/p&gt;
&lt;p&gt;Shayne Burgess&lt;br /&gt;Program Manager OData&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10211914" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-21-19-14/WCFDataServicesItemTemplates.zip" length="25459" type="application/zip" /></item><item><title>Update to the OData Library Available on CodePlex and NuGet</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/09/02/update-to-the-odata-library-available-on-codeplex-and-nuget.aspx</link><pubDate>Fri, 02 Sep 2011 18:23:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10205230</guid><dc:creator>dpblogs</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10205230</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/09/02/update-to-the-odata-library-available-on-codeplex-and-nuget.aspx#comments</comments><description>&lt;p&gt;We have just released a new drop of ODataLib and EdmLib on CodePlex as a shared source project. ODataLib is a library used for advanced OData serialization and deserialization scenarios, and EdmLib is a library used to manipulate entity data models. We invite you to download the code and test it out – this is very much an alpha release so any and all feedback is welcome. &lt;/p&gt;  &lt;p&gt;You can download the source for these libraries (and a number of others that we have published) at &lt;a href="http://odata.codeplex.com/"&gt;odata.codeplex.com&lt;/a&gt;. The libraries are also available as a NuGet package at &lt;a href="http://nuget.org/List/Packages/ODataLibrary"&gt;http://nuget.org/List/Packages/ODataLibrary&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Shayne Burgess    &lt;br /&gt;Program Manager – OData&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10205230" width="1" height="1"&gt;</description></item><item><title>Announcing WCF Data Services June 2011 CTP for .NET4 &amp; SL4</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/06/30/announcing-wcf-data-services-june-2011-ctp-for-net4-amp-sl4.aspx</link><pubDate>Thu, 30 Jun 2011 20:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10175401</guid><dc:creator>dpblogs</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10175401</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/06/30/announcing-wcf-data-services-june-2011-ctp-for-net4-amp-sl4.aspx#comments</comments><description>&lt;p&gt;Today we are releasing June CTP of the next version of the WCF Data Services libraries targeting.NET 4 and Silverlight 4.&amp;#160; Based on broad &lt;a href="http://data.uservoice.com/forums/72027-wcf-data-services-feature-suggestions"&gt;community feedback&lt;/a&gt;, in addition to features shipped as part of &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2010/10/26/announcing-wcf-data-services-oct-2010-ctp1-for-net4-amp-sl4.aspx"&gt;Oct 2010 CTP1&lt;/a&gt;, I’m happy to announce that this release includes two of the top three requested features by WCF Data Services developers; support for properties on derived types &amp;amp; support for Any/All LINQ operators. &lt;/p&gt;  &lt;p&gt;Below is a brief summary of the features available in this CTP.&amp;#160; Subsequent blog posts will discuss each feature in more detail and provide examples of how to use each.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Properties on derived types&lt;/b&gt;:&amp;#160; The WCF Data Services framework is designed to make it possible to expose a model that has inheritance hierarchy for the entities in the model however a current limitation is that only operations on properties that exist on the base type, associated with the set, are supported. This feature has been among our customers top asks since the lack of support makes exposing models with rich, well-defined inheritance hierarchies impossible to do. To enable such scenarios WCF Data Services now supports both exposing and consuming models which have properties (primitive, complex &amp;amp; navigation) defined on subtypes of the base type associated with the set.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Any/All&lt;/b&gt;:&amp;#160; One of our customers top asks has been increasing the expressiveness of WCF Data Services queries to be able to express questions/queries like ‘are there any customers which have no orders’ or ‘are there any customers who only spend more than $100 at our shop’. In this release we added support for&amp;#160; ‘any’ and ‘all’ canonical functions that can be used to ask these sorts of questions and can be invoked via the WCF Data Services client LINQ support.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;OData Library&lt;/b&gt;: As part of this release we are releasing a low level OData serializer/deserializer library that can be used in client or server stacks. The currently released library include support for serializing ATOM &amp;amp; JSON formats as well as deserializing JSON format.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Frequently Asked Questions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Q1: What are the prerequisites?&lt;/p&gt;  &lt;p&gt;A1: See the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26660"&gt;download center page&lt;/a&gt; for a list of prerequisites, supported operating systems, etc.&lt;/p&gt;  &lt;p&gt;Q2: Does this CTP install side-by-side with March CTP that is currently on my development machine? &lt;/p&gt;  &lt;p&gt;A2: No, side-by-side installation for these CTPs is not recommended. If the Data Services June 2011 CTP and the Data Services March 2011 CTP are installed on the same machine, Add Service Reference in Visual Studio will use the Data Services June 2011 CTP to generate the service reference in projects using either the March 2011 or June 2011 versions of the Data Services assembly.&amp;#160; Please uninstall the Data Services March 2011 CTP before installing the Data Services June 2011 CTP. If you already have both CTPs installed, please uninstall both and then reinstall the Data Services June 2011 CTP.&lt;/p&gt;  &lt;p&gt;Q3: Does this CTP install side-by-side with the .NET 4 and Silverlight 4 versions that are currently on my development machine? &lt;/p&gt;  &lt;p&gt;A3: By in large this install is side-by-side with existing .NET4 and SL4 bits; however, that was not possible in all cases so some VS files will be modified by the CTP installer to enable the Add Service Reference gesture in Visual Studio 2010 to make use of the new features in this CTP.&amp;#160; The files should be replaced to their original state during uninstall of this CTP.&amp;#160; &lt;/p&gt;  &lt;p&gt;Q4: Does this CTP include support for Windows Phone 7?&lt;/p&gt;  &lt;p&gt;A: No, you can download the Windows Phone 7 SDK, which includes the OData client, from &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26648"&gt;here&lt;/a&gt;. The Windows Phone 7 client does not yet support new features like properties on derived types.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Giving Feedback&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The following forum is dedicated to providing feedback on &amp;quot;pre-release&amp;quot; versions of data services such as this CTP: &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/dataservices/threads"&gt;http://social.msdn.microsoft.com/Forums/en-US/dataservices/threads&lt;/a&gt;.&amp;#160; Please direct all your questions about the release to this forum.&amp;#160; &lt;/p&gt;  &lt;p&gt;Note: The forum intended for questions on currently shipping versions of ADO.NET Data Services is still available at: (&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/threads"&gt;http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/threads&lt;/a&gt;&amp;#160; ). &lt;/p&gt;  &lt;p&gt;We look forward to hearing your thoughts on the release!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ahmed Moustafa&lt;/strong&gt;     &lt;br /&gt;Program Manager     &lt;br /&gt;WCF Data Services&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10175401" width="1" height="1"&gt;</description></item><item><title>datajs V1 Now Available</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/06/29/datajs-v1-now-available.aspx</link><pubDate>Thu, 30 Jun 2011 00:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10181640</guid><dc:creator>dpblogs</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10181640</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/06/29/datajs-v1-now-available.aspx#comments</comments><description>&lt;p&gt;   &lt;br /&gt;Over the last few months, we have been hard at work on the datajs library, releasing four preview versions and working with web developers to fine-tune the library. Today, we’re proud to announce that the first version of datajs is now available for download.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What does it do?&lt;/strong&gt;    &lt;br /&gt;datajs is a JavaScript library for web applications that supports the latest version of the OData protocol and HTML5 features such as local storage. It provides a simple, extensible API that can help you write better web applications, faster.&lt;b&gt;&lt;i&gt;&amp;#160;&lt;/i&gt;&lt;/b&gt; Our goal is to simplify working with data on the web, and to leverage improvements in modern browsers.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Where do I get it?&lt;/strong&gt;    &lt;br /&gt;You can download the development and minified version at &lt;a href="http://datajs.codeplex.com/"&gt;http://datajs.codeplex.com/&lt;/a&gt;. The source code for the release is also available, distributed under the MIT &lt;a href="http://datajs.codeplex.com/license"&gt;license&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You can also use NuGet to download the datajs &lt;a href="http://datajs.codeplex.com/license"&gt;package&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We hope this helps build a better web, and we look forward to &lt;a href="http://datajs.codeplex.com/discussions"&gt;hearing&lt;/a&gt; more from your experience.&lt;/p&gt;  &lt;p&gt;- The datajs team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10181640" width="1" height="1"&gt;</description></item><item><title>Announcing datajs version 0.0.4</title><link>http://blogs.msdn.com/b/astoriateam/archive/2011/06/20/announcing-datajs-version-0-0-4.aspx</link><pubDate>Mon, 20 Jun 2011 23:47:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10177198</guid><dc:creator>dpblogs</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astoriateam/rsscomments.aspx?WeblogPostID=10177198</wfw:commentRss><comments>http://blogs.msdn.com/b/astoriateam/archive/2011/06/20/announcing-datajs-version-0-0-4.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We are excited to announce that datajs version 0.0.4 is now available at &lt;a href="http://datajs.codeplex.com/"&gt;http://datajs.codeplex.com/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The latest release adds support for Reactive Extensions for Javascript (RxJs), forward and backwards cache filtering, extended metadata, simplified OData call configuration, and provides various performance and quality improvements.&lt;/p&gt;  &lt;p&gt;To get started, simply browse over to the &lt;a href="http://datajs.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; page, where you will find download instructions, overview and detailed topics, and some samples to get started quickly.&lt;/p&gt;  &lt;p&gt;This is the last planned release before version 1.0.0. The features and APIs are not expected to change, so this is a great time to try the library out and provide feedback through the project &lt;a href="http://datajs.codeplex.com/discussions"&gt;Discussions&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;Marcelo Lopez Ruiz   &lt;br /&gt;Software Design Engineer    &lt;br /&gt;Microsoft&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10177198" width="1" height="1"&gt;</description></item></channel></rss>
