<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>WCF Data Services Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/astoriateam/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/astoriateam/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:19:10 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>New and improved EULA!</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/new-and-improved-eula</link>
      <pubDate>Wed, 13 Nov 2013 14:12:00 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/11/13/new-and-improved-eula/</guid>
      <description><![CDATA[TL;DR: You can now (legally) use our .NET OData client and ODataLib on Android and...]]></description>
      <content:encoded><![CDATA[TL;DR: You can now (legally) use our .NET OData client and ODataLib on Android and iOS.

<h3>Backstory</h3>

For a while now we have been working with our legal team to improve the terms you agree to when you use one of our libraries (WCF Data Services, our OData client, or ODataLib). A year and a half ago, we announced that <a href="https://blogs.msdn.com/b/astoriateam/archive/2012/05/17/wcf-data-services-eulas-updated.aspx">our EULA would include a redistribution clause</a>. With the <a href="https://blogs.msdn.com/b/astoriateam/archive/2013/08/26/wcf-data-services-5-6-0-release.aspx">release of WCF Data Services 5.6.0</a>, we introduced portable libraries for two primary reasons:

<ol>  <li>Portable libraries reduce the amount of duplicate code and #ifdefs in our code base.</li>  <li>Portable libraries increase our reach through third-party tooling like Xamarin (more on that later).</li>  </ol>

It took some work to get there, and we had to make some sacrifices along the way, but we are now focused exclusively on portable libraries for client-side code. Unfortunately, our EULA still contained a clause that prevented the redistributable code from being legally used on a platform other than Windows.

<h3>OData and Xamarin: Extending developer reach to many platforms</h3>

We are really excited about <a href="https://blogs.msdn.com/b/somasegar/archive/2013/11/13/visual-studio-2013-launch-announcing-visual-studio-online.aspx">Microsoft&rsquo;s new collaboration with Xamarin</a>. As Soma says, this collaboration will allow .NET developers to broaden the reach of their applications and skills. This has long been the mantra of OData &ndash; a standardized ecosystem of services and consumers that enables consumers on any platform to easily consume services developed on any platform. This collaboration will make it much easier to write a shared code base that allows consumption of OData on Windows, Android or iOS.

<h3>EULA change</h3>

To fully enable this scenario, we needed to update our EULA. We, <a href="https://blogs.msdn.com/b/dotnet/archive/2013/11/13/pcl-and-net-nuget-libraries-are-now-enabled-for-xamarin.aspx">along with several other teams at Microsoft</a>, are rolling out a new EULA today that has relaxed the distribution requirements. Most importantly, we removed the clause that prevented redistributable code from being used on Android and iOS.

The <a href="https://go.microsoft.com/?linkid=9809688">new EULA</a> is effective immediately for all of our NuGet packages. This means that (even though we already released 5.6.0) you can create a Xamarin project today, take a new dependency on our OData client, and legally run that application on any platform you wish.

<h3>Thanks</h3>

As always, we really appreciate your feedback. It frequently takes us some time to react, but the credit for this change is due entirely to customer feedback. We hear you. Keep it coming.

Thanks, <br>The OData Team

</p>

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/46/76/37/odatacomponenteula.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-46-76-37/odatacomponenteula.zip">odatacomponenteula.zip</a>]]></content:encoded>
    </item>
    <item>
      <title>New version of OData Validator</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/new-version-of-odata-validator</link>
      <pubDate>Sun, 27 Oct 2013 20:09:54 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/10/27/new-version-of-odata-validator/</guid>
      <description><![CDATA[The OData team has been working on updating the OData Validator tool to support the new JSON format...]]></description>
      <content:encoded><![CDATA[The OData team has been working on updating the OData Validator tool to support the new JSON format validation. We are pleased to announce that the tool now supports validating your V3 service for all three formats &ndash; ATOM, old JSON format (aka JSON Verbose) and the new JSON format. We are also working on adding OData V4 service validation support. We will continue adding more validation rules over the next few months.<p>Please check out the tool here : <a href="https://services.odata.org/validation/">https://services.odata.org/validation/</a> and provide us feedback.</p><h3>About the tool</h3><p>OData Validator is an OData protocol validation tool. We have gone through the OData spec and created a set of rules to validate against a given OData payload. You can point the tool to your service and choose what you want to validate. The tool will run the right set of rules against the returned payload and tell you which ones passed and which ones failed. The tool will also link you to the relevant spec section so you can open the spec to see what it says. The tool supports validating various OData payloads like service document, metadata document, feed, entity and error payloads.</p>]]></content:encoded>
    </item>
    <item>
      <title>Using WCF Data Services 5.6.0 with Entity Framework 6+</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/using-wcf-data-services-5-6-0-with-entity-framework-6</link>
      <pubDate>Wed, 02 Oct 2013 15:05:01 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/10/02/using-wcf-data-services-5-6-0-with-entity-framework-6/</guid>
      <description><![CDATA[And now for some exciting news: you can finally use WCF Data Services with Entity Framework 6+!...]]></description>
      <content:encoded><![CDATA[And now for some exciting news: you can <em>finally</em> use WCF Data Services with Entity Framework 6+! Today we are uploading a new NuGet package called <a href="https://www.nuget.org/packages/Microsoft.OData.EntityFrameworkProvider/1.0.0-alpha1">WCF Data Services Entity Framework Provider</a>. This NuGet package bridges the gap between WCF Data Services 5.6.0 and Entity Framework 6+. We were able to build this provider as an out-of-band provider (that is, a provider that ships apart from the core WCF DS stack) because of the public provider work we did recently.

<h3>Upgrading an existing OData service to EF 6</h3>

If you are upgrading an existing OData service to Entity Framework 6 or greater, you will need to do a couple of things:

<ol>   <li>Install the <a href="https://www.nuget.org/packages/Microsoft.OData.EntityFrameworkProvider/1.0.0-alpha1">WCF Data Services Entity Framework Provider</a> NuGet package. Since this package has a dependency on WCF Data Services 5.6.0 and Entity Framework 6 or greater, some of the other NuGet packages in your project may be upgraded as well.</li>    <li>Replace the base type of your DataService. For EF 5 or below, your data service should inherit from <code>DataService&lt;T&gt;</code> where <code>T</code> is a <code>DbContext</code> or <code>ObjectContext</code>. For EF 6 or greater, your data service should inherit from <code>EntityFrameworkDataService&lt;T&gt;</code> where <code>T</code> is a <code>DbContext</code>. See <a href="https://blogs.msdn.com#diff">What&rsquo;s the difference between DataService and EntityFrameworkDataService</a> below for more details.</li> </ol>

<h3>Creating a new OData service with EF 6</h3>

If you are creating a new OData service and would like to use Entity Framework 6 or greater, you will need to follow similar steps:

<ol>   <li>Create your new project. I typically use an ASP.NET Empty Web Application for this, but you can use whatever you want. Note that if you do use the empty template, you may need to create an <code>App_Data</code> folder for Entity Framework to work properly with LocalDB.</li>    <li>Install the <a href="https://www.nuget.org/packages/Microsoft.OData.EntityFrameworkProvider/1.0.0-alpha1">WCF Data Services Entity Framework Provider</a> NuGet package. Since this package has a dependency on WCF Data Services 5.6.0 and Entity Framework 6 or greater, some of the other NuGet packages in your project may be upgraded as well.</li>    <li>Add a new WCF Data Service. It&rsquo;s best if you ensure that your tooling is up-to-date as we occasionally fix bugs in the item template. Our latest <a href="https://www.microsoft.com/en-us/download/details.aspx?id=39373">tooling installer</a> was released with WCF DS 5.6.0. It can be downloaded <a href="https://www.microsoft.com/en-us/download/details.aspx?id=39373">here</a>.</li>    <li>Replace the base type of the DataService that was generated by the item template. For EF 6 or greater, your data service should inherit from <code>EntityFrameworkDataService&lt;T&gt;</code> where <code>T</code> is a <code>DbContext</code>. See <a href="https://blogs.msdn.com#diff">What&rsquo;s the difference between DataService and EntityFrameworkDataService</a> below for more details.</li> </ol>

<h3 id="diff">What&rsquo;s the difference between DataService&lt;T&gt; and EntityFrameworkDataService&lt;T&gt;?</h3>

Historically the WCF DS stack required all WCF DS-based OData services to inherit from <code>DataService&lt;T&gt;</code>. Internally, the data service would determine whether the service should use the in-box EF provider, the in-box Reflection provider, or a custom provider. When we added support for EF 6, we utilized the new public provider functionality to allow the provider to ship separately. This will allow us, for instance, to use WCF DS 5.6.0 with either EF 5, 6, or some future version. However, the new public provider functionality comes with a little bit of code you need to write. Since that code should be the same for every default EF 6 WCF DS provider, we went ahead and included a class that does this for you. <code>EntityFrameworkDataService&lt;T&gt;</code> inherits from <code>DataService&lt;T&gt;</code> and implements all the code you would need to implement otherwise. By shipping this additional class, we literally made the upgrade process as simple as changing the base type of your service.

<h3>Feedback please</h3>

We are heads down on getting our stacks updated to support OData v4, so we&rsquo;ve had very limited resources to focus on testing this provider. We have a few automated tests and have tried a number of ad-hoc tests. That said, our coverage could be better so&hellip; we&rsquo;re going to rely on you, our dear customer, to provide feedback of whether or not this provider works in your situation. If we don&rsquo;t hear anything back, we&rsquo;ll go ahead and release the provider in a week or so.

<p>Thanks,<br>The OData Team</p>]]></content:encoded>
    </item>
    <item>
      <title>WCF Data Services 5.6.0 Release</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/wcf-data-services-5-6-0-release</link>
      <pubDate>Mon, 26 Aug 2013 21:59:35 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/08/26/wcf-data-services-5-6-0-release/</guid>
      <description><![CDATA[Recently we released updated NuGet packages for WCF Data Services 5.6.0. You will need the updated...]]></description>
      <content:encoded><![CDATA[Recently we released updated NuGet packages for WCF Data Services 5.6.0. You will need the <a href="https://www.microsoft.com/en-us/download/details.aspx?id=39373" target="_blank">updated tooling</a> (released today) to use the portable libraries feature mentioned below with code gen.<h3>What is in the release:</h3><h4>Visual Studio 2013 Support</h4><p>The WCF DS 5.6.0 tooling installer has support for Visual Studio 2013. If you are using Visual Studio 2013 and would like to consume OData services, you can use this tooling installer to get <em>Add Service Reference</em> support for OData. Should you need to use one of our prior runtimes, you can still do so using the normal NuGet package management commands (you will need to uninstall the installed WCF DS NuGet packages and install the older WCF DS NuGet packages).</p><h4>Portable Libraries</h4><p>All of our client-side libraries now have portable library support. This means that you can now use the new JSON format in Windows Phone and Windows Store apps. The core libraries have portable library support for .NET 4.0, Silverlight 5, Windows Phone 8 and Windows Store apps. The WCF DS client has portable library support for .NET 4.5, Silverlight 5, Windows Phone 8 and Windows Store apps. Please note that this version of the client does not have tombstoning, so if you need that feature for Windows Phone apps you will need to continue using the <a href="https://go.microsoft.com/fwlink/?LinkId=268126" target="_blank">Windows Phone-specific tooling</a>.</p><h4>URI Parser Integration</h4><p>The URI parser is now integrated into the WCF Data Services server bits, which means that the URI parser is capable of parsing any URL supported in WCF DS. We have also added support for parsing functions in the URI Parser.</p><h4>Public Provider Improvements - Reverted</h4><p>In the 5.5.0 release we started working on making our providers public. In this release we hoped to make it possible to override the behavior of included providers with respect to properties that don&rsquo;t have native support in OData v3, for instance enum and spatial properties. Unfortunately we ran into some non-trivial bugs with <code>$select</code> and <code>$orderby</code> and needed to cut the feature for this release.</p><h4>Public Transport Layer</h4><p>In the 5.4.0 release we added the concept of a request and response pipeline to WCF Data Service Client. In this release we have made it possible for developers to directly handle the request and response streams themselves. This was built on top of ODataLib's <code>IODataRequestMessage</code> and <code>IODataResponseMessage</code> framework that specifies how requests and responses are sent and recieved. With this addition developers are able to tweak the request and response streams or even completely replace the HTTP layer if they so desire. We are working on a blog post and sample documenting how to use this functionality.</p><h4>Breaking Changes</h4><p>In this release we took a couple of breaking changes. As these bugs are tremendously unlikely to affect anyone, we opted not to increment the major version number but we wanted everyone to be aware of what they were:</p><ul>   <li>Developers using the reading/writing pipeline must write to <code>Entry</code> rather than <code>Entity</code> on the <code>WritingEntryArgs</code></li>    <li>Developers should no longer expect to be able to modify the navigation property source in <code>OnNavigationLinkStarting</code> and <code>OnNavigationLinkEnding</code></li>    <li>Developers making use of the <code>DisablePrimitiveTypeConversion</code> knob may see a minor change in their JSON payloads; the knob previously only worked for the ATOM format</li> </ul><h3>Bug Fixes</h3><ul>   <li>Fixes a performance issue with models that have lots of navigation properties</li>    <li>Fixes a performance issue with the new JSON format when creating or deleting items</li>    <li>Fixes a bug where <code>DisablePrimitiveTypeConversion</code> would cause property type annotations to be ignored in the new JSON format</li>    <li>Fixes a bug where <code>LoadProperty</code> does not remove elements from a collection after deleting a link</li>    <li>Fixes an issue where the URI Parser would not properly bind an action to a collection of entities</li>    <li>Improves some error messages</li> </ul><h3>Known Issues</h3><p>The NuGet runtime in Visual Studio needs to be 2.0+ for <em>Add Service Reference</em> to work properly. If you are having issues with <em>Add Service Reference</em> in Visual Studio 2012, please ensure that NuGet is up-to-date.</p>]]></content:encoded>
    </item>
    <item>
      <title>Using the new client hooks in WCF Data Services Client</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/using-the-new-client-hooks-in-wcf-data-services-client</link>
      <pubDate>Fri, 26 Jul 2013 11:49:02 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/07/26/using-the-new-client-hooks-in-wcf-data-services-client/</guid>
      <description><![CDATA[What are the Request and Response Pipeline configurations in WCF Data Services Client?In WCF Data...]]></description>
      <content:encoded><![CDATA[<h3>What are the Request and Response Pipeline configurations in WCF Data Services Client?In WCF Data Services 5.4 we added a new pattern to allow developers to hook into the client request and response pipelines. In the server, we have long had the concept of a <a href="https://msdn.microsoft.com/en-us/library/system.data.services.dataserviceprocessingpipeline_events.aspx">processing pipeline</a>. Developers can use the processing pipeline event to tweak how the server processes requests and responses. This concept has now been added to the client (though not as an event). The feature is exposed through the <code>Configurations</code> property on the <code>DataServiceContext</code>. On <code>Configurations</code> there are two properties, called <code>ResponsePipeline</code> and <code>RequestPipeline</code>. The <code>ResponsePipeline</code> contains configuration callbacks that influence reading to OData and materializing the results to CLR objects. The <code>RequestPipeline</code> contains configuration callbacks that influence the writing of CLR objects to the wire. Developers can then build on top of the new public API and compose higher level functionality.

The explanation might be a bit abstract so let&rsquo;s move look at a real world example. The code below will document how to remove a property that is unnecessary on the client or that causes materialization issues. Previously this was difficult to do, and impossible if the payload was returning the newer JSON format, but this scenario is now trivially possible with the new hooks. Below is a code snippet to remove a specific property:

<script src="https://gist.github.com/markdstafford/6091320.js?file=example1.cs"></script>

This code is using the <code>OnEntryRead</code> response configuration method to remove the property. Behind the scenes what is happening is the <code>Microsoft.Data.ODataReader</code> calls <code>reader.Read()</code>. As it reads though the items, depending on the <code>ODataItem</code> type a call will be made to the all configuration callbacks of that type that are registered. A couple notes about this code:</p><ol><li>Since <code>ODataEntry.Properties</code> is an <code>IEnumerable&lt;ODataProperty&gt;</code> and not an <code>ICollection&lt;ODataProperty&gt;</code>, we need to replace the entire <code>IEnumerable</code> instead of just calling <code>ODataEntries.Properties.Remove()</code>.</li> <li><code>ResolveType</code> is used here to use the <code>TypeName</code> and get the <code>EntityType</code>, typically for a code generated <code>DataServiceContext</code> this method is automatically hooked up but if you are using a <code>DataServiceContext</code> directly then delegate code will need to be written.</li></ol><p>What if this scenario has to occur for other properties on the same type or properties on a different type? Let&rsquo;s make some changes to make this code a bit more reusable.

Extension method for removing a property from an <code>ODataEntry</code>:

<script src="https://gist.github.com/markdstafford/6091320.js?file=example2.cs"></script>

Extension method for removing a property from the <code>ODataEntry</code> on the selected type:

<script src="https://gist.github.com/markdstafford/6091320.js?file=example3.cs"></script>

And now finally the code that the developer would write to invoke the method above and set the configuration up:

<script src="https://gist.github.com/markdstafford/6091320.js?file=example4.cs"></script>

The original code is now broken down and is more reusable. Developers can use the <code>RemoveProperties</code> extension above to remove any property from a type that is in the <code>ODataEntry</code> payload. These extension methods can also be chained together.

The example above shows how to use <code>OnEntryEnded</code>, but there are a number of other callbacks that can be used. Here is a complete list of configuration callbacks on the response pipeline:

<script src="https://gist.github.com/markdstafford/6091320.js?file=example5.cs"></script>

All of the configuration callbacks above with the exception of <code>OnEntityMaterialized</code> and <code>OnMessageReaderSettingsCreate</code> are called when the <code>ODataReader</code> is reading through the feed or entry. The <code>OnMessageReaderSettingsCreate</code> callback is called just prior to when the <code>ODataMessageWriter</code> is created and before any of the other callbacks are called. The <code>OnEntityMaterialized</code> is called after a new entity has been converted from the given <code>ODataEntry</code>. The callback allows developers to apply any fix-ups to an entity after it was converted.

Now let&rsquo;s move on to a sample where we use a configuration on the <code>RequestPipeline</code> to skip writing a property to the wire. Below is an example of an extension method that can remove the specified properties before it is written out:

<script src="https://gist.github.com/markdstafford/6091320.js?file=example6.cs"></script>

As you can see we are following the same pattern as the extension method we wrote to <code>RemoveProperties</code> for the <code>ResponsePipeline</code>. In comparison to this extension method this function doesn&rsquo;t require the type resolving func, so it&rsquo;s a bit simpler. The type information is specified on the <code>OnEntryEnding</code> args in the <code>Entity</code> property. Again this example only touches on <code>ODataEntryEnding</code>. Below is the complete list of configuration callbacks that can be used:

<script src="https://gist.github.com/markdstafford/6091320.js?file=example7.cs"></script>

With the exception of <code>OnMessageWriterSettingsCreated</code>, the other configuration callbacks are called when the <code>ODataWriter</code> is writing information to the wire.

In conclusion, the request and response pipelines offer ways to configure the how payloads are read and written to the wire. Let us know any other questions you might have to leverage this feature.

<p>Chris Robinson &ndash; OData Team</p></h3>]]></content:encoded>
    </item>
    <item>
      <title>WCF Data Services 5.6.0 Alpha</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/wcf-data-services-5-6-0-alpha</link>
      <pubDate>Fri, 28 Jun 2013 16:53:09 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/06/28/wcf-data-services-5-6-0-alpha/</guid>
      <description><![CDATA[Today we are releasing updated NuGet packages and tooling for WCF Data Services 5.6.0. This is an...]]></description>
      <content:encoded><![CDATA[Today we are releasing updated <a href="https://www.nuget.org/packages/Microsoft.Data.Services/5.6.0-alpha1">NuGet packages</a> and tooling for WCF Data Services 5.6.0. This is an alpha release and as such we have both features to finish as well as quality to fine-tune before we release the final version.<p>You will need the updated tooling to use the portable libraries feature mentioned below. The <a href="https://www.microsoft.com/en-us/download/details.aspx?id=39373">tooling installer</a> is available from the download center.</p><h3>What is in the release:</h3><h4>Visual Studio 2013 Support</h4><p>The WCF DS 5.6.0 tooling installer has support for Visual Studio 2013. If you are using the Visual Studio 2013 Preview and would like to consume OData services, you can use this tooling installer to get Add Service Reference support for OData. Should you need to use one of our prior runtimes, you can still do so using the normal NuGet package management commands (you will need to uninstall the installed WCF DS NuGet packages and install the older WCF DS NuGet packages).</p><h4>Portable Libraries</h4><p>All of our client-side libraries now have portable library support. This means that you can now use the new JSON format in Windows Phone and Windows Store apps. The core libraries have portable library support for .NET 4.0, Silverlight 5, Windows Phone 8 and Windows Store apps. The WCF DS client has portable library support for .NET 4.5, Silverlight 5, Windows Phone 8 and Windows Store apps. Please note that this version of the client does not have tombstoning, so if you need that feature for Windows Phone apps you will need to continue using the Windows Phone-specific tooling.</p><h4>URI Parser Integration</h4><p>The URI parser is now integrated into the WCF Data Services server bits, which means that the URI parser is capable of parsing any URL supported in WCF DS. We are currently still working on parsing functions, with those areas of the code base expected to be finalized by RTW.</p><h4>Public Provider Improvements</h4><p>In the 5.5.0 release we started working on making our providers public. In this release we have made it possible to override the behavior of included providers with respect to properties that don&rsquo;t have native support in OData v3. Specifically, you can now create a public provider that inherits from the Entity Framework provider and override a method to make enum and spatial properties work better with WCF Data Services. We have also done some internal refactoring such that we can ship our internal providers in separate NuGet packages. We hope to be able to ship an EF6 provider soon.</p><h3>Known Issues</h3><p>With any alpha, there will be known issues. Here are a few things you might run into:</p><ul>   <li>We ran into an issue with a build of Visual Studio that didn&rsquo;t have the NuGet Package Manager installed. If you&rsquo;re having problems with Add Service Reference, please verify that you have a version of the NuGet Package Manager and that it is up-to-date.</li>    <li>We ran into an issue with build errors referencing resource assemblies on Windows Store apps. A second build will make these errors go away.</li> </ul><h3>We want feedback!</h3><p>This is a very early alpha (we think the final release will happen around the start of August), but we really need your feedback now, especially in regards to the portable library support. Does it work as expected? Can you target what you want to target? Please leave your comments below or e-mail me at <a href="https://blogs.msdn.commailto:mastaffo@microsoft.com">mastaffo@microsoft.com</a>. Thank you!</p>]]></content:encoded>
    </item>
    <item>
      <title>WCF Data Services 5.5.0 Release</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/wcf-data-services-5-5-0-release</link>
      <pubDate>Thu, 30 May 2013 08:32:37 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/05/30/wcf-data-services-5-5-0-release/</guid>
      <description><![CDATA[WCF Data Services 5.5.0 has officially been released! The 5.5.0 release will be another NuGet-only...]]></description>
      <content:encoded><![CDATA[WCF Data Services 5.5.0 has officially been released! The 5.5.0 release will be another <a href="https://nuget.org/packages/microsoft.data.services/5.5.0">NuGet-only</a> release as we did not make any updates to the Visual Studio tooling.

The last tooling update was <a href="https://www.microsoft.com/en-us/download/details.aspx?id=35840">version 5.3.0</a>. Services created using this version of tooling should update the runtime binaries to 5.5.0 with NuGet.

<h3>What is in the release:</h3>

This release has two primary features: 1) significant enhancements to the URI parser and 2) public data source providers. In addition to the primary features, there are two secondary enhancements and over 40 bug fixes included with this release.

<h4>URI Parser</h4>

In the 5.2.0 release ODataLib provided a way to parse $filter and $orderby expressions into a metadata-bound abstract syntax tree (AST). In the 5.5.0 release we have updated the URI parser with support for most OData URIs. The newly introduced support for parsing $select and $expand is particularly notable. With the 5.5.0 release the URI Parser is mostly done. Future releases will focus on higher-order functions to further improve the developer experience.&nbsp; 

<h4>Public Data Source Providers</h4>

In this release we have made the Entity Framework and Reflection data source providers public. This gives more control to service writers. There is more work planned in the future but the work we&rsquo;ve completed allows some advanced scenarios which were not possible earlier. For example, a service writer can now make use of the Entity Framework query-caching feature by intercepting the request and parameterizing the LINQ query before handing it off to Entity Framework. (Note that parameterizing a LINQ query is not the same as parameterizing a SQL query; EF always does the latter and therefore there is no security implications to failing to parameterize a LINQ to Entities query, the only impact is performance related.)

<p>While the potential unlocked with this release is limited, this is the first move in a direction which will unlock many previously unachievable scenarios with the built in providers.</p><h4>Performance Improvements</h4><p>We constantly strive to improve performance and reliability with every release. In this release, we have increased performance by double digit percentages for service authors that want to respond with JSON but are not able to (or don't want to) provide a data model to ODataLib.</p><h4>Improved Developer Experience</h4><p>In this release we have caught up with some missing IntelliSense guidance and we are uploading symbols and source to SymbolSource.org. We will upload symbols for many of our past releases as well.</p><h4>Bug Fixes</h4><p>In addition to the features above, we have included fixes for the following notable bugs:</p><ul>   <li>Fixes an issue where the reflection provider would not work properly if the generic parameter provided to DataService&lt;T&gt; was an interface</li>    <li>Fixes an issue where some system headers were not being set when a client called BuildingRequest</li>    <li>Fixes an issue where setting InstanceContextMode to Single on DataService would result in cache result being returned for subsequent requests</li>    <li>Fixes an issue where ODataLib would sometimes allow null to be written whether or not the expected type was nullable</li>    <li>Fixes a regression in 5.4 where ODataLib started writing unnecessary type information in certain instances</li>    <li>Fixes an issue where the WCF DS client would sometimes not dispose the response if the response had no content</li>    <li>Improves a number of errors and error messages</li> </ul>]]></content:encoded>
    </item>
    <item>
      <title>WCF Data Services 5.5.0 Prerelease</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/wcf-data-services-5-5-0-prerelease</link>
      <pubDate>Wed, 15 May 2013 17:30:14 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/05/15/wcf-data-services-5-5-0-prerelease/</guid>
      <description><![CDATA[It&rsquo;s that time again: yesterday we uploaded an RC for the upcoming 5.5.0 release. The 5.5.0...]]></description>
      <content:encoded><![CDATA[It&rsquo;s that time again: yesterday we uploaded an RC for the upcoming 5.5.0 release. The 5.5.0 release will be another <a href="https://nuget.org/packages/microsoft.data.services/5.5.0-rc1">NuGet-only</a> release.

<h3>What is in the release:</h3>

This release has two primary features: 1) significant enhancements to the URI parser and 2) public data source providers.

<h4>URI Parser</h4>

In the 5.2.0 release ODataLib provided a way to parse $filter and $orderby expressions into a metadata-bound abstract syntax tree (AST). In the 5.5.0 release we have updated the URI parser with support for most OData URIs. The newly introduced support for parsing $select and $expand is particularly notable. With the 5.5.0 release the URI Parser is mostly done. Future releases will focus on higher-order functions to further improve the developer experience.

Note: We are still trying to determine what the right API is for $select and $expand. While the API may change before RTM, the feature is functionally complete.

<h4>Public Data Source Providers</h4>

In this release we have made the Entity Framework and Reflection data source providers public. This gives more control to service writers. There is more work planned in the future but the work we&rsquo;ve completed allows some advanced scenarios which were not possible earlier. For example, a service writer can now make use of the Entity Framework query-caching feature by intercepting the request and parameterizing the LINQ query before handing it off to Entity Framework. (Note that parameterizing a LINQ query is not the same as parameterizing a SQL query; EF always does the latter and therefore there is no security implications to failing to parameterize a LINQ to Entities query, the only impact is performance related.)

<p>While the potential unlocked with this release is limited, this is the first move in a direction which will unlock many previously unachievable scenarios with the built in providers.</p>]]></content:encoded>
    </item>
    <item>
      <title>WCF Data Services 5.4.0 Release</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/wcf-data-services-5-4-0-release</link>
      <pubDate>Tue, 02 Apr 2013 15:16:15 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/04/02/wcf-data-services-5-4-0-release/</guid>
      <description><![CDATA[Today we are releasing version 5.4.0 of WCF Data Services. As mentioned in the prerelease post, this...]]></description>
      <content:encoded><![CDATA[Today we are releasing version 5.4.0 of WCF Data Services. As mentioned in <a href="https://blogs.msdn.com/b/astoriateam/archive/2013/03/26/wcf-data-services-5-4-0-prerelease.aspx">the prerelease post</a>, this release will be <a href="https://nuget.org/packages/Microsoft.Data.Services/5.4.0">NuGet packages</a> only. That means that we are not releasing an updated executable to the download center. If you create a new WCF Data Service or add a reference to an OData service, you should follow the standard procedure for making sure your <a href="https://docs.nuget.org/docs/start-here/managing-nuget-packages-using-the-dialog#Updating_a_Package">NuGet packages are up-to-date</a>. (Note that this is standard usage of NuGet, but it may be new to some WCF Data Services developers.)<h3>Samples</h3><p>If you haven&rsquo;t noticed, we&rsquo;ve been releasing a lot more frequently than we used to. As we adopted this rapid cadence, our documentation has fallen somewhat behind and we recognize that makes it hard for you to try out the new features. We do intend to release some samples demonstrating how to use the features below but we need a few more days to pull those samples together and did not want to delay the release. Once we get some samples together we will update this blog post (or perhaps add another blog post if we need more commentary than a gist can convey).</p><h3>What is in the release:</h3><h4>Client deserialization/serialization hooks</h4><p>We have a number of investments planned in the &ldquo;request pipeline&rdquo; area. In 5.4.0 we have a very big set of hooks for reaching into and modifying data as it is being read from or written to the wire format. These hooks provide extensibility points that enable a number of different scenarios such as modifying wire types, property names, and more.</p><h4>Instance annotations on atom payloads</h4><p>As promised in the 5.3.0 release notes, we now support instance annotations on Atom payloads. Instance annotations are an extensibility feature in OData feeds that allow OData requests and responses to be marked up with annotations that target feeds, single entities (entries), properties, etc. We do still have some more work to do in this area, such as the ability to annotate properties.</p><h4>Client consumption of instance annotations</h4><p>Also in this release, we have added APIs to the client to enable the reading of instance annotations on the wire. These APIs make use of the new deserialization/serialization pipelines on the client (see above). This API surface includes the ability to indicate which instance annotations the client cares about via the Prefer header. This will streamline the responses from OData services that honor the <code>odata.include-annotations</code> preference.</p><h4>Simplified transition between Atom and JSON formats</h4><p>In this release we have bundled a few less-noticeable features that should simplify the transition between the Atom and (the new) JSON format. (See also the bug fixes below on type resolver fixes.)</p><h4>Bug fixes</h4><p>In addition to the features above, we have included fixes for the following notable bugs:</p><ul>   <li>Fixes an issue where reading a collection of complex values would fail if the new JSON format was used and a type resolver was not provided</li>    <li>Fixes an issue where ODataLib was not escaping literal values in IDs and edit links</li>    <li>Fixes an issue where requesting the service document with application/json;odata=nometadata would fail</li>    <li>Fixes an issue where using the new JSON format without a type resolver would create issues with derived types</li>    <li>(Usability bug) Makes it easier to track the current item in ODataLib in many situations</li>    <li>Fixes an issue where the LINQ provider on the client would produce $filter instead of a key expression for derived types with composite keys</li>    <li>(Usability bug) Fixes an issue where the inability to set EntityState and ETag values forced people to detach and attach entities for some operations</li>    <li>Fixes an issue where some headers required a case-sensitive match on the WCF DS client</li>    <li>Fixes an issue where 304 responses were sending back more headers than appropriate per the HTTP spec</li>    <li>Fixes an issue where a request for the new JSON format could result in an error that used the Atom format</li>    <li>Fixes an issue where it was possible to write an annotation value that was invalid according to the term</li>    <li>Fixes an issue where PATCH requests for OData v1/v2 payloads would return a 500 error rather than 405</li> </ul><h3>We want your feedback</h3><p>We always appreciate your comments on the blog posts, forums, Twitterverse and e-mail (<a href="https://blogs.msdn.commailto:mastaffo@microsoft.com">mastaffo@microsoft.com</a>). We do take your feedback seriously and prioritize accordingly. We are still early in the planning stages for 5.5.0 and 6.0.0, so feedback now will help us shape those releases.</p>]]></content:encoded>
    </item>
    <item>
      <title>WCF Data Services 5.4.0 Prerelease</title>
      <link>https://docs.microsoft.com/archive/blogs/astoriateam/wcf-data-services-5-4-0-prerelease</link>
      <pubDate>Tue, 26 Mar 2013 10:53:57 GMT</pubDate>
      <dc:creator><![CDATA[dpblogs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/astoriateam/2013/03/26/wcf-data-services-5-4-0-prerelease/</guid>
      <description><![CDATA[Recently we uploaded an RC for our upcoming 5.4.0 release. This release will be NuGet packages...]]></description>
      <content:encoded><![CDATA[Recently we uploaded an RC for our upcoming 5.4.0 release. This release will be <a href="https://nuget.org/packages/Microsoft.Data.Services/5.4.0-rc1">NuGet packages</a> only.<h3>What is in the release:</h3><h4>Client deserialization/serialization hooks</h4><p>We have a number of investments planned in the &ldquo;request pipeline&rdquo; area. In 5.4.0 we have a very big set of hooks for reaching into and modifying data as it is being read from or written to the wire format. These hooks provide extensibility points that enable a number of different scenarios such as modifying wire types, property names, and more.</p><h4>Instance annotations on atom payloads</h4><p>As promised in the 5.3.0 release notes, we now support instance annotations on Atom payloads. Instance annotations are an extensibility feature in OData feeds that allow OData requests and responses to be marked up with annotations that target feeds, single entities (entries), properties, etc. We do still have some more work to do in this area, such as the ability to annotate properties.</p><h4>Client consumption of instance annotations</h4><p>Also in this release, we have added APIs to the client to enable the reading of instance annotations on the wire. These APIs make use of the new deserialization/serialization pipelines on the client (see above). This API surface includes the ability to indicate which instance annotations the client cares about via the Prefer header. This will streamline the responses from OData services that honor the <code>odata.include-annotations</code> preference.</p><h4>Simplified transition between Atom and JSON formats</h4><p>In this release we have bundled a few less-noticeable features that should simplify the transition between the Atom and (the new) JSON format. (See also the bug fixes below on type resolver fixes.)</p><h4>Bug fixes</h4><p>In addition to the features above, we have included fixes for the following notable bugs:</p><ul>   <li>Fixes an issue where reading a collection of complex values would fail if the new JSON format was used and a type resolver was not provided</li>    <li>Fixes an issue where ODataLib was not escaping literal values in IDs and edit links</li>    <li>Fixes an issue where requesting the service document with application/json;odata=nometadata would fail</li>    <li>Fixes an issue where using the new JSON format without a type resolver would create issues with derived types</li>    <li>(Usability bug) Makes it easier to track the current item in ODataLib in many situations</li>    <li>Fixes an issue where the LINQ provider on the client would produce $filter instead of a key expression for derived types with composite keys</li>    <li>(Usability bug) Fixes an issue where the inability to set EntityState and ETag values forced people to detach and attach entities for some operations</li>    <li>Fixes an issue where some headers required a case-sensitive match on the WCF DS client</li>    <li>Fixes an issue where 304 responses were sending back more headers than appropriate per the HTTP spec</li>    <li>Fixes an issue where a request for the new JSON format could result in an error that used the Atom format</li>    <li>Fixes an issue where it was possible to write an annotation value that was invalid according to the term</li>    <li>Fixes an issue where PATCH requests for OData v1/v2 payloads would return a 500 error rather than 405</li> </ul><p>&nbsp;</p><h3>What to expect over the next six months:</h3><p>We will blog about this in more detail soon, but we have multiple releases planned that have some level of overlap. We should be publishing a 5.5.0 alpha soon (with additional URI parser functionality for Web API&rsquo;s OData stack) and in a couple of months you should see a very early alpha of 6.0.0. We&rsquo;re not ready to say much about 6.0.0 yet other than the fact that it will support OData v4 and will probably have some breaking changes, so we want to get it out there as soon as possible because&hellip;</p><h3>We want your feedback</h3><p>We always appreciate your comments on the blog posts, forums, Twitterverse and e-mail (<a href="https://blogs.msdn.commailto:mastaffo@microsoft.com">mastaffo@microsoft.com</a>). We do take your feedback seriously and prioritize accordingly. We would encourage you strongly to start pulling down these early bits, testing with your existing services, and telling us where things break, where we&rsquo;ve gone too far, and where we haven&rsquo;t gone far enough.</p>]]></content:encoded>
    </item>
  </channel>
</rss>