ADO.NET Data Services Framework Beta 1 is Live!

Published 12 May 08 09:20 AM | dpblogs 

We are very excited to announce that .NET 3.5 SP1 Beta 1 and Visual Studio 2008  SP1 Beta 1 are now available! 

This beta marks the entry of the ADO.NET Data Services Framework as well as the ADO.NET Entity Framework as part of the overall .NET/Visual Studio product and will be the final beta before the RTM of both technologies.

The remainder of this post will cover the changes and additions to the ADO.NET Data Services Framework since the last CTP in Dec 07.  The

Since our last CTP in Dec 2007 along with the ASP.NET 3.5 Extensions Preview, there have been a number of changes and added features.  I'll try to summarize the changes and features below.  We'll follow up as we go with some more details on the changes and what to expect post Beta 1. 

Changes:

  • Assembly and namespace changes.  Now that we are part of the .NET Framework we have changed our assembly, namespace and API names to reflect the standard .NET naming conventions.  The main assembly and namespace changes are:
    • All Microsoft.Data.*.dll assemblies have been renamed to System.Data.Services.dll (server) and System.Data.Services.Client.dll (client)
    • Anything in Microsoft.Web.* namespaces have moved to System.Data.Services (server types) & System.Data.Services.Client(client types)
    • The assemblies are now installed to the standard location for .NET 3.5 assemblies
  • API Name Changes. The main API name changes are:
    • In general anything which was named WebData* has changed to DataService*
    • In general anything with was named ResourceSet* or Resource* was changed to EntitySet* and Entity*
    • WebDataService class changed to DataService
    • IWebDataServiceConfiguration changed to IDataServiceConfiguration
    • WebDataServiceContext class changed to DataServiceContext
    • WebDataQuery class changed to DataServiceQuery
    • ResourceActions enum changed to UpdateOperations 
  • Query Interceptor Changes.  We changed the syntax of query interceptors to take 0 arguments and return a predicate (return type = Expression<Func<[EntityType],bool>>.  An example interceptor that limits queries to all categories starting with the letter "B" now looks like:
   1:  [QueryInterceptor("ProductCategory")]
   2:  public Expression<Func<ProductCategory, bool>> 
                                    OnQueryProductCategory()
   3:  {
   4:      return (pc) => pc.Name.StartsWith("B");
   5:  }
  • Update Interceptor Changes.  The ResourceActions enum changed name to UpdateOperations
  • AJAX/Javascript Library. The Javascript library for data services which was part of the ASP.NET 3.5 Extensions preview is not part of this beta release.  Instead, we will iterate in short intervals on this library, making intermediate drops available on http://codeplex.  The first drop which works with this Beta 1 release is available here
  • Command line tool changes.  The command line tool to generate client side types for a data service (webdatagen.exe) has had a its name changed to datasvcutil.exe and its parameter list simplified.  You can now find this tool in the \Windows\Microsoft.Net\Framework\V3.5 directory
  • A bunch of bug fixes :)
  • Tweaks to the ATOM payload format.  We've made a few tweaks to the payload format based on feedback from the ATOM community.  We've got a bit more to do here so please expect a bit of churn to the payload formats post Beta 1.

Features: 

  • Batching: data services now support the ability to group a set of requests into a "batch" to be sent to the server in a single HTTP request.  The system supports the idea of an atomic group of operations as well as a loose group of operations without such guarantees.  This release doesn't quite have what we're thinking in terms of a final design for this feature, but is quite representative of our thinking. An early write up of the feature is here
  • Optimistic Concurrency: Data services now support the notion of optimistic concurrency by passing concurrency token values using HTTP ETags and making conditionals requests using HTTP If-* requests.  Some notes on how this works are here.  We'll also likely extend support post this Beta release to include use of the '*' character in conditional requests.
  • New IUpdatable interface.  As was the case in the last CTP, you can create a data service over relational databases using integration with the Entity Framework or you can expose any data source as a REST service that has an IQueryable provider.  In the last CTP we had defined an IUpdatable interface which could be implemented to make such data sources r/w at the service tier.  We have significantly changed this interface to make it easier to use.  I've put this "change" in the list of features as we redesigned the API based on our teams reviews and user feedback.  A write up of the new interface is here.

We look forward to your feedback... 

-Mike Flasko

Program Manager, ADO.NET Data Service Framework

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Eric J. Smith said on May 12, 2008 1:27 PM:

So I guess there still aren't any options for getting total record count when doing paging, eh?  Doesnt seem like that functionality is going to make it into 1.0 at all.  I just really cant understand how something that seems like such a core requirement to me isnt going to be addressed for the 1.0 release.  Maybe I'm the only one that thinks its required and everyone else is OK with doing next / prev paging solutions.  Ah well.

# pabloc said on May 12, 2008 1:38 PM:

Eric: you can be sure we had long serious conversations about this...however, our focus is on ship soon, ship often. There will be always more features that we'd like to add. We prefered to deliver this version of Astoria as part of SP1, and then in the next iteration we'll include a number of the things that didn't make this time around. For this case we thought that next/prev was "good enough"...I understand that it's not perfect for everybody.

-pablo

# Pablo Castro's blog said on May 12, 2008 2:19 PM:

The news are out. The ADO.NET Data Services Framework (Astoria) and the ADO.NET Entity Framework will

# Mike C said on May 12, 2008 4:59 PM:

Quick question - is there any reason why Astoria won't work with AdventureWorks 2008 sample database?  I can get it to recognize some tables (Person.EmailAddress, Production.Product), but not others (Person.Person, etc.)  I haven't found a pattern yet - am I missing something?  Thanks.

# pabloc said on May 12, 2008 5:15 PM:

Mike: do you see any messages in the VS errors/warnings/messages window when you point the Entity Data Model wizard to the database and click finish?

-pablo

# Mike C said on May 12, 2008 5:24 PM:

I can't locate the Entity Data Model wizard in VS 2008.  I tried adding a LINQ to SQL classes object and it picks up varying tables.  How do I access the wizard?  Thanks for the help

# Marcelo's WebLog said on May 12, 2008 5:30 PM:

Ahh... Don't you love the smell of fresh software in the morning? Yes, this is why I've gone silent for

# pabloc said on May 12, 2008 5:53 PM:

Mike: assuming you installed SP1 beta 1, the EDM wizard pops-up when you do File -> Add New Item and choose the "ADO.NET Entity Data Model" item template. The wizard will guide you through the rest of the process.

As for the LINQ to SQL case, one thing that might be happening is that not all the tables may result in CLR types that follow the Astoria default convention for key properties, so you may need to use the DataServiceKey attribute to indicate which properties should be treated as keys on each table (at least each table that didn't show up). DataServiceKey is a class-level attributes to enable these scenarios, you can use a partial class to put the attribute and pass the name(s) of the key property.

-pablo

# Mike C said on May 12, 2008 6:40 PM:

Thanks Pablo, there's currently no "ADO.NET Entity Data Model" item template showing up.  I do have .NET 3.5 SP 1 beta 1 and VS 2008 SP 1 beta 1. I'm uninstalling and reinstalling both now. I'll have a look at the data types for the tables it's not pulling via LINQ to SQL Classes, but the tables I'm pulling don't appear to have any of the new 2008 data types in them.  I'll have a closer look and get back to you. BTW, the LINQ to SQL Classes method appears to work great against SQL 2005.  Thanks again for the help.

# Guru Stop <!-- Mohamed Meligy --> said on May 12, 2008 7:27 PM:

Microsoft .NET framework 3.5 Service Pack 1 and Visual Studio 2008 Service Pack 1 now have public BETAs

# Mike C said on May 12, 2008 7:31 PM:

Hi Pabloc, it looks like uninstalling and reinstalling the SP betas did the trick.  Now I have the "ADO.NET Entity Data Model" template in the File > New > File ... menu option.  Thanks for the help!

# こだかたろうです said on May 12, 2008 10:41 PM:

こんにちは、こだかです。 以前から、お話していました、Visual Studio 2008 &amp; ,NET Framewoork3.5 SP1 Beta1がリリースされました。 ( http://msdn.microsoft.com/ja-jp/vstudio/cc533448(en-us).aspx

# unbornchikken said on May 12, 2008 11:07 PM:

Hi!

Thanx for the new stuff! Is entity polymorphism scenario supported in this release? I've noticed that the .OfType<T>() query operator isn't. I hope this will be a v1 feature because my entity models heavily relies on inheritance.

# どっとねっとふぁんBlog said on May 13, 2008 1:52 AM:

Visual Studio 2008 &amp; .NET Framework3.5 SP1 Beta1がリリースされました ということで、SP1のベータ版がリリースされてます。 これにはいろいろな機能拡張が含まれてますね。...

# pabloc said on May 13, 2008 2:02 AM:

Re: polymorphism, yes, Data Services can include schemas that use inheritance. OfType<T> should work if used within the limitations of queries translatable to URLs. What is your scenario? What error do you get?

-pablo

# Mike Taulty's Blog said on May 13, 2008 6:55 AM:

Just links.... ScottGu Soma Entity Framework Data Services Download

# unbornchikken said on May 13, 2008 10:56 AM:

Hi Pablo!

I haven't got enought time yet to test the beta bits. It might be my fault not data service's. :) Glad to hear that it finally supported. Today I gonna give it another try!

Just for the record, I was at Summit, I know some members of your team. I've been developing a full featured change tracker databindable client library for Astoria. I have a friend in the VSX team (Istvan Novak, author of the DiveDeeper blog: http://www.architekturaforum.hu/blogs/divedeeper/), so Visual Studio integration is on the roadmap. I've been working a real life solution and article also to demonstrate power of the 3.5 era, including EF, Astoria, WCF, WPF and Silverlight 2.0. It will be published on a hungarian .NET site, but English version is coming soon.

I (we) only need a better documentation of Astoria. Entity Framework already have an early version on MSDN, but Astoria's short introduction on asp.net is poor. Today if we want to know something we have to use Reflector. Or MSDN forum, but it's nine hour later at Europe you know, so it's not too fast information gathering method. :)

Again, thank you for the new stuff! Today I'll give it a try!

# Mike Flasko said on May 13, 2008 12:07 PM:

re: docs for Astoria, we are actively working on getting docs out to MSDN as well as a whitepaper and a few blogs.  Thanks for the feedback...

# Peter said on May 13, 2008 3:13 PM:

I make a db with one table.  That table has a primary key.  I create a model.  I run.  I get:

The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'.

Any ideas?

# pabloc said on May 13, 2008 4:52 PM:

Peter: could you post a code-snippet that represents the part that's generating the error? (e.g. at least the query that you're using).

-pablo

# Peter said on May 13, 2008 5:03 PM:

I am playing drag and drop programmer.  The only "coding" I did was to uncomment and update:

model.RegisterContext(typeof(Database1Entities1), new ContextConfiguration() { ScaffoldAllTables = true });

Then I pressed F5 and clicked on my table.

# pabloc said on May 13, 2008 5:07 PM:

Peter: I see...you're using the ASP.NET dynamic data feature. I'll ping one of the guys that built that so he can comment.

-pablo

# davidebb said on May 13, 2008 5:18 PM:

Hi Peter,

When you create your web site, please make sure you choose 'Dynamic Data Entities Web Site' and not 'Dynamic Data Web Site' (which is for Linq To Sql).

thanks,

David

# BenHayat said on May 14, 2008 11:01 AM:

Mike, Pablo (Pablo, Mike) :-)

Could you please drop a note here when the docs are ready? I need to get up to speed for SL integration.

Thank you guys for bringing this platform. Amazing, it was like yesterday, when Pable was demoing his ideas about Astoria on the first video, and not it's part of .Net.

Way to go Pablo...

# ufuk çoban said on May 14, 2008 1:56 PM:

in this version client objects are not serializable. can i set generated client objects as serializable without setting each in the auto generated code?

# Fabrice's weblog said on May 14, 2008 7:45 PM:

The ADO.NET team details on its blog what has changed for LINQ to SQL with the release of Visual Studio

# LINQ in Action - LINQ Book & News said on May 14, 2008 7:45 PM:

The ADO.NET team details on its blog what has changed for LINQ to SQL with the release of Visual Studio

# Fabrice's weblog said on May 14, 2008 7:46 PM:

The ADO.NET team details on its blog what has changed for LINQ to SQL with the release of Visual Studio

# ccBoy's WebLog said on May 15, 2008 6:41 AM:

ScottGu's - Visual Studio 2008 and .NET Framework 3.5 Service Pack 1 Beta http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx

# Hot Topics said on May 19, 2008 3:54 PM:

Lots to read and download from the Data Programmability Team &#160; SP1 Beta Download, what&#39;s new

# Dario Quintana said on May 20, 2008 9:56 AM:

After this refactoring to include Astoria within .Net 3.5, where is the script MicrosoftAjaxDataServices.js ?

Because I've the sp1 installed, but I can't find it.

Is it supposed to be within System.Web.Extensions.dll ? Because it's not.

# Dario Quintana said on May 20, 2008 10:12 AM:

Neverming, my bad, it's at Codeplex, thanks for the info.

Best regards

# ActiveDev said on May 21, 2008 5:01 PM:

How does the authenication(security) plays in dataservice

# Mick Andrew said on May 24, 2008 3:18 PM:

Regarding the missing Entity Data model problem.... I ran into this, tried the devenv /setup suggestion, looked harder (again) for problematic beta or KB updates that needed to be removed, and finally (!) reread the release notes... no luck...

THEN! just as I was about to uninstall/reinstall, I recalled the release note about the SP1 not saving your settings... and guess what one of the default settings is for a VS2008 project?  .Net *3.0*.

Yesss!! No reinstall for me on my Saturday afternoon, changing the project type to .net 3.5 did the trick.

Hope this helps others get going.

# Zachariah Young said on June 29, 2008 8:08 AM:

VS2008 and .Net 3.5 SP1 Beta - Install complete

# Nathan said on July 16, 2008 4:47 PM:

When I try something like

svc.Customers.Where(c => new string[]{"London", "Paris"}.Contains(c.City) )

The runtime throws the following error:

The method 'Contains' is not supported

If it's not supported, is there any workaround?

# Frank Patton said on August 27, 2008 5:14 PM:

do you guys have any simple examples or hand on labs

that are current with vs 2008 sp1 silverlight 2.0 and 3.5 sp1

# Nick Williams said on September 18, 2008 4:59 PM:

What can users like myself, JB, Eric Smith, PWelter, Michael DB, jb_tiburon, and countless others do to ensure the that a method to return record count for a query makes it in to the next release?

What do we need to do?  A petition?  What will it take to make these cries heard?

# pabloc said on September 18, 2008 7:27 PM:

Nick: we've heard you loud and clear. We know folks want this and we have a work-item for it in our all-up features database. I want this to make it to the next release as much as you guys. That said, as a matter of policy we never guarantee that a given feature makes it to a particular release. Things happen that shuffle priorities around in unplanned ways.

-pablo

Leave a Comment

(required) 
(optional)
(required) 

  
Enter Code Here: Required

Search

This Blog

Syndication

Page view tracker