ADO.NET Data Services Framework Beta 1 is Live!

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 https://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

Comments

  • Anonymous
    May 12, 2008
    The comment has been removed
  • Anonymous
    May 12, 2008
    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
  • Anonymous
    May 12, 2008
    The news are out. The ADO.NET Data Services Framework (Astoria) and the ADO.NET Entity Framework will
  • Anonymous
    May 12, 2008
    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.
  • Anonymous
    May 12, 2008
    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
  • Anonymous
    May 12, 2008
    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
  • Anonymous
    May 12, 2008
    Ahh... Don't you love the smell of fresh software in the morning? Yes, this is why I've gone silent for
  • Anonymous
    May 12, 2008
    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
  • Anonymous
    May 12, 2008
    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.
  • Anonymous
    May 12, 2008
    Microsoft .NET framework 3.5 Service Pack 1 and Visual Studio 2008 Service Pack 1 now have public BETAs
  • Anonymous
    May 12, 2008
    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!
  • Anonymous
    May 12, 2008
    こんにちは、こだかです。 以前から、お話していました、Visual Studio 2008 &amp; ,NET Framewoork3.5 SP1 Beta1がリリースされました。 ( http://msdn.microsoft.com/ja-jp/vstudio/cc533448(en-us).aspx
  • Anonymous
    May 12, 2008
    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.
  • Anonymous
    May 12, 2008
    Visual Studio 2008 &amp; .NET Framework3.5 SP1 Beta1がリリースされました ということで、SP1のベータ版がリリースされてます。 これにはいろいろな機能拡張が含まれてますね。...
  • Anonymous
    May 12, 2008
    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
  • Anonymous
    May 12, 2008
    Just links.... ScottGu Soma Entity Framework Data Services Download
  • Anonymous
    May 13, 2008
    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!
  • Anonymous
    May 13, 2008
    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...
  • Anonymous
    May 13, 2008
    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?
  • Anonymous
    May 13, 2008
    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
  • Anonymous
    May 13, 2008
    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.
  • Anonymous
    May 13, 2008
    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
  • Anonymous
    May 13, 2008
    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
  • Anonymous
    May 14, 2008
    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...
  • Anonymous
    May 14, 2008
    in this version client objects are not serializable. can i set generated client objects as serializable without setting each in the auto generated code?
  • Anonymous
    May 14, 2008
    The ADO.NET team details on its blog what has changed for LINQ to SQL with the release of Visual Studio
  • Anonymous
    May 14, 2008
    The ADO.NET team details on its blog what has changed for LINQ to SQL with the release of Visual Studio
  • Anonymous
    May 14, 2008
    The ADO.NET team details on its blog what has changed for LINQ to SQL with the release of Visual Studio
  • Anonymous
    May 14, 2008
    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
  • Anonymous
    May 19, 2008
    Lots to read and download from the Data Programmability Team &#160; SP1 Beta Download, what&#39;s new
  • Anonymous
    May 20, 2008
    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.
  • Anonymous
    May 20, 2008
    Neverming, my bad, it's at Codeplex, thanks for the info.Best regards
  • Anonymous
    May 21, 2008
    How does the authenication(security) plays in dataservice
  • Anonymous
    May 24, 2008
    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.
  • Anonymous
    June 29, 2008
    VS2008 and .Net 3.5 SP1 Beta - Install complete
  • Anonymous
    July 16, 2008
    When I try something likesvc.Customers.Where(c => new string[]{"London", "Paris"}.Contains(c.City) )The runtime throws the following error:The method 'Contains' is not supportedIf it's not supported, is there any workaround?
  • Anonymous
    August 27, 2008
    do you guys have any simple examples or hand on labsthat are current with vs 2008 sp1 silverlight 2.0 and 3.5 sp1
  • Anonymous
    September 18, 2008
    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?
  • Anonymous
    September 18, 2008
    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