Update on the Windows Phone 7 OData Client Libirary
Team blog post here :
WCF Data Services Client Library and Windows Phone 7 – Next Steps
And some sample code for more context.
With the Linq pattern, here is what the code for downloading the first 10 customers would look like :
DataServiceCollection<Customer> customerCollection = new DataServiceCollection<Customer>(Context);
customerCollection.Load(Context.CreateQuery<Customer>("Customers").Take(10));
Now, with the URI pattern, this is what it looks like :
DataServiceCollection<Customer> customerCollection = new DataServiceCollection<Customer>(Context);
customerCollection.Load(Context.CreateQuery<Customer>("Customers").Take(10));
var top10CustomersUri = new Uri("Customers?$top=10", UriKind.RelativeOrAbsolute);
Context.BeginExecute<Customer>(top10CustomersUri,
(asResult) =>
{
var top10CustomersResponse = Context.EndExecute<Customer>(asResult) as QueryOperationResponse<Customer>;
customerCollection.Load(top10CustomersResponse);
}, null);
We can make code a lot easier to read with an Extension method that takes a URI on the LoadAsync method.
public static class DataServiceCollectionExtensions
{
public static void LoadAsync<TEntity>(this DataServiceCollection<TEntity> collection,
DataServiceContext context, Uri requestUri)
{
context.BeginExecute<TEntity>(
requestUri,
(asResult) =>
{
var results = context.EndExecute<TEntity>(asResult);
collection.Load(results);
}, null);
}
}
Which converts our code to :
var top10CustomersUri = new Uri("Customers?$top=10", UriKind.RelativeOrAbsolute);
customerCollection.LoadAsync(Context, top10CustomersUri);
I’ll make a more detailed blog post later about the WP7 client library for OData and a sample application too.