Showing posts with label LINQ to LLBLGen Pro. Show all posts
Showing posts with label LINQ to LLBLGen Pro. Show all posts

Thursday, June 12, 2008

LINQ and Entity Framework Posts for 6/9/2008+

Note: This post is updated daily or more frequently, depending on the availability of new articles.

Updated 6/11/2008 and 6/13/2008: See Added and Updated flags below.

Eugenio Pace Posts a New SQL Server Data Services Sample: A Provider for BlogEngine.NET

Eugenio’s Another SSDS sample: BlogEngine.NET on SSDS post of June 11, 2008 describes his SQL Server Data Services (SSDS) provider’s source code for the BlogEngine.NET 1.3.1 ASP.NET blog project as follows:

  1. The SSDS based BlogProvider
  2. An SSDS based Membership & Role Providers for the web site
  3. Unit tests for all (with about 93% coverage for the provider)
  4. A simple tool for pre-loading the SSDS container with information that BlogEngine need to start

He also says “The new SSDS BlogProvider also uses patterns & practices Unity application block to wire up dependencies.”

It’s related to the SSDS demo in Bill Gates’ Tech*Ed keynote and definitely worth a trial run.

Added: 6/13/2008

Phil Haack Promises Future Posts about Integrating Web Forms with MVC

He says in ASP.NET MVC And Dynamic Data Learn To Play Well Together of June 11, 2008:

I’ve been working on a post detailing a couple different ways to integrate WebForms and MVC, but life has been really busy for me lately. Hopefully I’ll get that to you soon.

In the meanwhile, you can probably learn all you need to know by looking at [MvcDynamicData.zip on this Code Gallery page.]

Added: 6/13/2008

Jim Wooley Demos LINQ to SQL with Plain Old CLR Objects (POCO) During the Tech*Ed Tweener Weekend

Jim’s LINQ to SQL support for POCO post of June 11, 2008 describes his Tweener demo as follows:

I created two separate projects. The first class library project, I created only targeting the 2.0 framework. As a result the project can not use any LINQ specific techniques. This will also allow us to consume the resulting objects in projects that do not have access to the newer framework, or to all of the namespaces. This is particularly important in cases like Silverlight. To call attention to the differences in the projects, I declared the 2.0 project in C# and the LINQ enabled project in VB.

His post includes a link to download the demo projects.

He also posted a link to his Tech*Ed Speaker Idol presentation, Screen scraping and creating Word documents with LINQ to XML.

Added: 6/13/2008

Julie Lerman Wants a Simpler Implentation of “Eager Deferred Loading” in Entity Framework

Danny Simmons provided an example of combining the Attach() and Include() methods with the CreateSourceQuery() surrogate for the Load method to return associated child and grandchild records in the ADO.NET Entity Framework and LINQ to Entities (Pre-release) forum’s Re: v2 Wish Lists - Add Yours Here thread.

Julie says in her Eager Deferred Loading of related entities post of June 11, 2008, that customer.Orders.Attach(customer.Orders.CreateSourceQuery().Include("Order_Details")) is “awfully convoluted,” but it works.

Added: 6/11/2008

Rob Conery Does MVC Storefront Part 14 with AJAX Control Toolkit and a Narrative Preview of IQueryable<T> in SubSonic 3.0

The screencast of Rob’s MVC Storefront Part 14: Ajax With Shawn Burke post of June 10, 2008 introduces ASP.NET AJAX to his MVC project to provide async form posting. Rob mentions that Phil Haack is in the process of AJAX-enabling the ASP.MVC library, so Rob’s code will be obsolete in a few months.

In SubSonic 3.0: IQueryable Update of the same date, Rob discusses the challenges of writing an expression tree with a visitor to translate LINQ Select queries to his SubSonic intermediate query language, thanks to Matt Warren’s Building an IQueryable Provider: Part II - Where and reusable Expression tree visitor post of July 31, 2007. Everyone working on LINQ-enabled data providers for databases or object/relational management (O/RM) tools is indebted to Matt for his detailed seven-part series.

Added: 6/11/2008

Maíra Wenzel Shows You How to Create Your Own Custom Metadata Attributes for ASP.NET Dynamic Data Entity Sets or Properties

Maíra’s Using custom attributes in Dynamic Data post of June 4, 2008 explains the process for writing and consuming custom metadata attribute classes by inheriting from Attribute and applying the AttributeUsage attribute. Her example changes the ForeColor of a property to a member of the KnownColor enumeration.

Added: 6/11/2008

Tech*Ed 2008 Panel Presentation: Occasionally Connected Systems

The following folks involved in occasionally connected systems (OCS) and ADO.NET Sync Systems:

  • Ginny Caughey - Microsoft MVP, Wasteworks
  • Steve Lasker - Sr. Program Manager, Microsoft SQL Server Compact
  • Rob Tiffany - Microsoft Mobility Architect
  • Rob Relyea - Architect, WPF Team
  • Liam Cavanagh - Sr. Program Manager, Microsoft Sync Framework

got together at Tech*Ed 2008 Developer to discuss storage, sync, programming model and UI for OCS. One of the new topics the panel discusses is republishing subscriptions for scalability.

The video is available here in multiple formats: Building Offline Enabled Applications [MP4] [WMV Hi] [WMV Lo]

Added: 6/11/2008

Scott Hunter Discusses the ASP.NET Dynamic Data Runtime on .NET Rocks

.NET Rocks Scott Hunter on Microsoft Dynamic Data (Show #349) post carries this deck:

Carl and Richard talk with Scott Hunter on Microsoft's Dynamic Data Runtime, which provides scaffolding and dynamic data services to developers.

ASP.NET Dynamic Data content starts at about 09:00.

At ~13:30, Scott mentions ADO.NET Data Services (Astoria) and LLBLGen Pro data layer for Dynamic Data and an intention to support NHibernate as a data layer. I don’t see an advantage to the use of Astoria, but support for LLBLGen Pro and NHibernate would be very welcome. You can read more about LLBLGen Pro support in Frans Bouma’s Dynamic Data and 3rd party o/r mappers is a fact post of May 1, 2008.

Scott Hanselman says the following about Dynamic Data and NHibernate:

In the future, watch for the possibility of Dynamic Data for POCO (my term, not the teams), Dynamic Data for Silverlight and Dynamic Data for MVC. Now is your opportunity to be heard. I'd like the idea of Dynamic Data for NHibernate myself, so I'm pushing for that. Feel free to engage in the Dynamic Data Forums or post bugs on this release in the issue tracker.

Scott Hunter confirms at ~47:00 that Dynamic Data for MVC is in the works for the next version.

Added: 6/10/2008 10:30 AM PDT

Updated 6/11/2008: Frans Bouma’s Dynamic Data and 3rd Party O/R Mappers Is a Fact post of May 1, 2008 described LLBL Gen Pro’s support for backing Dynamic Data. Frans is in the process of updating his sample provider to .NET 3.5 SP1 Beta.

Tim Anderson Misses the Point of My “Is the ADO.NET Team Abandoning LINQ to SQL?” Post

Tim’s Bet on ADO.NET Data Services, not LINQ to SQL post of June 10, 2008 starts:

So says Roger Jennings in his post Is the ADO.NET team abandoning LINQ to SQL? His main points in favour of ADO.NET Data Services (formerly Astoria):

  • It is the focus of more energetic development
  • It already has richer features
  • It supports multiple database engines, not just SQL Server

My post mentioned ADO.NET Data Services in passing as a client of Entity Framework (as is ASP.NET Dynamic Data.)

My point was that Entity Framework was a better bet than LINQ to SQL for a production object/relational mapping (O/RM) data layers because it’s getting the lions share of attention (and development resources) from SQL Server’s Data Programmability Group.

Update 6/11/2008: In a comment, Tim says he meant Entity Framework, not Astoria, and accidentally interchanged the two in his post. He changed the title and body of his updated post.

Paul Stovell Releases Bindable LINQ 1.0 Beta 1

Bindable LINQ is a LINQ to Objects implementation for Windows Presentation Foundation, Silverlight, and Windows Forms that provides data binding with collection change propagation. You can download the beta bits under a BSD license from CodePlex.

Paul's subsequent Bindable LINQ: Bindable Aggregates of June 10, 2008 provides insight on how Bindable LINQ responds to changes to LINQ aggregate values.

Note: WPF-oriented developers will appreciate Paul's detailed Article: Inductive UI’s with WPF Navigation Applications post of June 5, 2008, which was inspired by a Microsoft whitepaper, Inductive User Interface Guidelines, published in 2001.

Dare Obasanjo Takes on Joel Spolsky's Post About Live Mesh and Hailstorm

Hailstorm was the codename for .NET My Services, a heavily hyped but unsuccessful Web services initiative by Microsoft to make user data hosted on MSN available to the same users at other sites. Joel Spolsky's Architecture astronauts take over post of May 1, 2008 concludes that Live Mesh is Hailstorm reincarnated and doomed to failure because data synchronization "is just not a killer application."

Dare's Some Thoughts on Joel Spolsky's Live Mesh Rant of June 10, 2008 post points out:

Hailstorm has actually proven to have been a very visionary and accurate picture of how the world ended up. A lot of the information that used to sit in my desktop in 2001 is now in the cloud. My address book is on Facebook, my photos are on Windows Live Spaces and Flickr, my email is in Hotmail and Yahoo! Mail, while a lot of my documents are now on SkyDrive and Google Docs. Almost all of these services provide XML-based APIs for accessing my data and quite frankly I find it hard to distinguish the ideas behind a unified set of user-centric cloud APIs that was .NET My Services from Google GData.

He also notes that Mark Lucovsky is a former Microsoft employee who moved to Google. What Dare didn't mention is that Lucovsky was Hailstorm's architect and chief evangelist.

Frans Bouma Releases LLBLGen Pro v2.6 with Full LINQ Support

Frans' LLBLGen Pro v2.6 has been released! post of June 9, 2008 begins:

After almost 11 months of design, development, beta testing and adding final polish, it's here: LLBLGen Pro v2.6! This version, which is a free upgrade for all our v2.x customers, has a couple of major new features, the biggest of course being the full implementation of Linq support in our O/R mapper framework. The work on our Linq provider, which we've dubbed 'Linq to LLBLGen Pro', lasted almost 9 months and was discussed on this blog in a series of articles, which I'll linq to below.

He goes on to explain his problems with creating LINQ to LLBLGen Pro, lists what's new in v2.6, and adds links to the 15 detailed blog posts that chronicled his LINQ implementation.

Congrats, Frans!

Sync Framework Team Announces RC0 of Sync Framework and ADO.NET Sync Services in SQL Server 2008 RC0

The team’s Announcing Sync Framework v1.0 RC0 and Sync Services for ADO.NET v2.0 RC0 post of June 9, 2008 notes that SQL Server 2008 RC0 includes Sync Framework v 1.0 and Sync Services for ADO.NET 2.0 and provides the following download points for the SQL Server 2008 RC0:

There's no indication so far of availability of standalone bits that are compatible with SQL Server 2005.

Update 6/10/2008 3:15 PM PDT: Thanks to Mary Jo Foley for confirming that the Sync Framework will continue to be available as a standalone download.

Update 6/10/2008 10:30 AM PDT: According to the Data Platform Insider's SQL Server 2008 RC0 Available for Everyone post of June 10, 2008, Bob Muglia announced at Tech*Ed that everyone can download the RC0 and it's What’s New notes from:

  • Download SQL Server 2008 RC0
  • What's new in SQL Server 2008

    The team expects to release a CTP (Community Technology Preview) of the Sync Framework on devices in 2008Q3.

    Liam  Cavanagh Explains Hosted Services Synchronization in Gates's Tech*Ed Keynote

    Liam's Synchronization to Hosted Services and an Explanation of the Bill Gates Keynote post of June 9, 2008 points out that SQL Server Data Services (SSDS) was the central data storage point for synchronization of simulated blog posts between a local SQL Server instance and Windows Mobile devices.

    Mary Jo Foley Wonders Why It's Taken Microsoft So Long to Release Live Mesh

    Mary Jo's Are all (Microsoft and Apple) sync services created equal? post of June 9, 2008 says:

    Apple’s introduction of the successor to .Mac — a k a, MobileMe — raises the question as to what’s taking Microsoft so long to roll out Live Mesh.

    There aren’t a whole lot of details yet available on MobileMe, other than that it will allow cloud-based synchronization of data and devices. (And will make use of Microsoft’s ActiveSync technology, which Apple licensed from Microsoft in order to bring push e-mail to the iPhone, creating its “Exchange for the rest of us.”)

    From initial reports, MobileMe sounds like a combination of a Windows Live (the various Webified versions of the .Mac point products), Live Mesh (the Mobile Me sync service) and SkyDrive (the Mobile Me cloud-based storage). It is slated to be available to customers in July for a (pricey) $99, which includes 20 GB of storage.

    She also reports having a difficult time getting Microsoft executives to explain why Microsoft didn't use the Sync Framework for Live Mesh. She says:

    All I could get out of them was Live Mesh is the P2P, out-of-the-box sync solution and Sync Framework is the customizable, developer-focused sync solution. The only place (so far) where the two meet: FeedSync.

    Very strange.

    Note: Skydrive stores the ~500 images for this blog and has delivered them with no observed outages or performance issues. The only problem I've encountered is a brief interval (an hour or less) when I couldn't upload images; downloading wasn't affected.

    Skain Compares Several Techniques for Bulk Deletions with LINQ to SQL

    Skain's Bulk Deletes in Linq to SQL update to an April 8, 2008 post chronicles his search for a bulk deletion method for LINQ to SQL that doesn't retrieve each object into memory and delete it while executing the DataContext.DeleteAllOnSubmit() method.

    His final DataContext.BulkDelete() extension method provides a better solution, however there are references in the comments to alternative solutions.

    Coşkun Sunali Uses the LinqDataSource as a DataPager Workaround for the ListView Control

    His Using DataPager with Code-Behind Data Source post of June 9, 2008 says:

    Some of you might have already realized that DataPager does its job only if you use a DataSource control. For instance, if you want to set a ListView’s DataSource property in page’s Load event and expect DataPager control to successfully page the ListView control, it means that you will need to spend your hours to find why it does not work.

    Coşkun provides the simple source code for the workaround.

    Strange Exception Generated by Open File Dialog in a Windows Form Backed by the Entity Framework

    Sumeet reports in his Entity framework and OpenFileDialog post of June 8, 2008 that closing, not canceling, an OpenFileDialog in a Windows form of a project using the Entity Framework as a data access layer causes an exception on the next call to the ObjectContext.

    The problem appears to be a change to the Environment.CurrentDirectory property, which must be reset with an Environment.CurrentDirectory = Application.StartupPath instruction.

    John Papa Posts a Linklist to Silverlight 2 Beta 2 Resources

    John's Silverlight 2 Beta 2 Rundown post of June 8, 2008 provides 13 links to early Silverlight 2 Beta 2 Resources, including Shawn Wildermut's Using ADO.NET Data Services in Silverlight 2 Beta 2.

    Mike Tulty applauds John's list in his Silverlight 2 Beta 2 - What's New? post of June 9, 2008.

    DataGrid Breaking Changes and Behavior Differences in Silverlight 2 Beta 2

    The Silverlight SDK Team's DataGrid Control Beta 2 Changes of June 6, 2008 points to the DataGrid Beta 2 Breaking Changes post of the same date, but also includes behavior changes for Autogenerated Columns and Automatic Sizing.

    Note: A substantial amount of Silverlight 2 Beta 2 content is included in these posts because of the new Silverlight Client Library for ADO.NET Data Services.

    Shawn Wildermuth Explains How to Debug ADO.NET Data Services with Fiddler2

    Shawn's Debugging ADO.NET Data Services...with Fiddler2 of June 6, 2008 provides detailed instructions for using Fiddler2 with ADO.NET Data Services, including adding the period after the IP address to make localhost data appear.

    He concludes:

    One caveat, this is the first release of the ADO.NET Data Services' Silverlight Client Library so give it time to improve some of the performance issues.  But like other data access libraries, sometimes small changes can make large improvements in performance.

    Shawn also announced that he's updated the following Silverlight 2 sites and projects to Beta 2:

    Off-Topic: Windows Live Writer Technical Preview for Build 14 Appears Solid

    I've been posting with the Windows Live Writer (WLW) Technical Preview for build 14 since its release on June 2, 2008 and haven't encountered a problem so far.

  • Tuesday, May 20, 2008

    Danny Simmons Answers the Frequently Asked Question: Why Use the Entity Framework?

    Updated 5/19/2008 and 5/20/2008 (see end of post and comments)

    Traditional ADO.NET provides high-performance access to a wide range of relational database management systems (RDBMSs) with a common set of managed DbConnection, DbCommand and other Db... objects, as well as typed and untyped DataSets. DataSets were designed from the git-go to be serialized for n-tier service-oriented (formerly XML Web services) architecture. They carry current and original values with them across tiers to manage concurrency conflicts. LINQ to DataSet extends LINQ's Standard Query Operators to DataSets.

    LINQ to SQL is an easy-to-use object/relational management (O/RM) tool that's designed for simple application scenarios with SQL Server 2000+ on the back end. LINQ to SQL v1 isn't suited to service-oriented architecture because its object graphs (entities with associations) can't be serialized with the Windows Communication Framework (WCF) DataContractSerializer. (The LINQ to SQL team appears not to have updated its entity classes to take advantage of the upgraded version of VS 2008 SP1 Beta's DataContract Serializer.) Several third parties have written wrappers or add-ons to make SQL Server operable in n-tier projects.

    nHibernate is a mature, well-supported, open-source O/RM that offers plain old CLR objects (POCOs), persistence ignorance, great modeling flexibility and many third-party add-ins. nHibernate is widely used in n-tier, service-oriented .NET projects. A LINQ to nHibernate project is in early stage development. nHibernate is owned by Red Hat Middleware LLC and licensed under the Lesser GNU Public License (LGPL.) Ayende Rahien (Oren Eini), the author of Rhino Mocks, is a principal contributor to nHibernate.

    There are 40+ commercial and open-source third-party O/RM tools for .NET. LLBLGen Pro, Genome and EntitySpaces are three examples of commercial O/RM tools that implement LINQ.

    So an obvious issue for data-oriented .NET developers is should I use an O/RM and, if so, which one should I choose as my "standard O/RM?" Few independent developers or development teams can afford the time to gain expertise with the ins and outs of multiple, highly complex O/RM tools, such as nHibernate.

    Danny Simmons' Why use the Entity Framework? post of May 16, 2008 briefly compares the ADO.NET Entity Framework (EF) with traditional ADO.NET and DataSets, LINQ to SQL, and nHibernate. However, it's his comparison with nHibernate that contains the most important reason for .NET developers to choose EF:

    The EF was specifically structured to separate the process of mapping queries/shaping results from building objects and tracking changes.  This makes it easier to create a conceptual model which is how you want to think about your data and then reuse that conceptual model for a number of other services besides just building objects.

    Long-term we are working to build EDM awareness into a variety of other Microsoft products so that if you have an Entity Data Model, you should be able to automatically create REST-oriented web services over that model (ADO.Net Data Services aka Astoria), write reports against that model (Reporting Services), synchronize data between a server and an offline client store where the data is moved atomically as entities even if those entities draw from multiple database tables on the server, create workflows from entity-aware building blocks, etc. etc.

    Not only does this increase the value of the data model by allowing it to be reused for many parts of your overall solution, but it also allows us to invest more heavily in common tools which will streamline the development process, make developer learning apply to more scenarios, etc.  So the differentiator is not that the EF supports more flexible mapping than nHibernate or something like that, it's that the EF is not just an ORM--it's the first step in a much larger vision of an entity-aware data platform. [Emphasis and formatting added.]

    As Danny notes, EF is the preferred back-end for ADO.NET Data Services, which in turn will become the on-premises version of SQL Server Data Services (SSDS). EF also is the preferred back end for ASP.NET Dynamic Data. The Live Mesh team is working with the Astoria Folks to incorporate "Astoria Offline," which combines ADO.NET Data Services and the Microsoft Sync Framework, into their fledgling online/offline desktop. Synergy with current and future Microsoft applications, tools and platforms is the most important reason to choose EF.

    Update 5/19/2008: Frans Bouma posts a "Why not to use the Entity Framework" treatise as Why use the Entity Framework? Yeah, why exactly?

    Update 5/20/2008: More doubters:

    Julie Lerman posted this link to Bloglines citations of Danny's post in her Responses to Danny Simmons "Why Entity Framework" post of May 20, 2008.

    Sunday, May 04, 2008

    LINQ and Entity Framework Posts for 5/1/2008+

    Note: This post is updated daily or more frequently, depending on the availability of new articles.

    Streaming LINQ Shows Potential for Complex Event Processing

    Marc Adler's On Entitlements, Coral8 CCL, SQL, and LINQ post of May 4, 2008 describes difficulties he encountered in when porting an T-SQL query with two inner and two outer joins to Coral8's Continuous Computation Language (CCL) for a financial analysis project. He was able to implement the LINQ equivalent of his T-SQL query in about 10 minutes. His conclusion:

    LINQ has a lot of goodness to it. LINQ is pervasive, and all flavors of LINQ are being developed. I can very well imagine that Microsoft is looking at versions of LINQ that could handle streaming data. Right now, I think that it would be fairly easy to hook up LINQ queries in a pipeline that would handle simple queries on streaming data. Adding streaming SQL constructs is very doable.

    If Microsoft was to come out with a Streaming LINQ that is available as part of .NET, how would this affect the world of CEP? An immediate casualty might be NEsper.* ... But, longer term, I think that a combination of WCF, Streaming LINQ, and a version of Microsoft Analysis Services that was further geared to real-time streams would be a killer to the rest of the CEP industry.

    * NEsper is an Open Source ESP/CEP Engine for .NET. ESP is an abbreviation for Event Stream Processing, which encompasses Complex Event Processing (CEP).

    Marc is the technical lead for a CEP project at a major Wall Street investment bank. Entitlements in this post's context refers to persons entitled to view CEP results, not Social Security or Medicare.

    In a comment to the post, Jon Riecke, Lead Platform Architect for Aleri, Inc., a CEP software vendor, mentioned that the upcoming 3.0 release of the Aleri Streaming Platform will base its pattern-matching facilities on LINQ syntax.

    To find out more about CEP, tune into the Complex Event Processing Blog and Marco on CEP.

    P.S. Bart De Smet just posted the final episode of his C# 3.0 Pattern Matching Series: The Return of the Pattern Matcher - Sample Code Available

    Added: 5/4/2008 12:30 PDT

    Andrew Matthews Updates LINQ to RDF v0.6 to VS 2008

    From the How Did I Miss This Department: Andrew (a.k.a. the Wandering Glitch) released LINQ to RDF v0.6 on April 5, 2008. His Announcing LinqToRdf v0.6 post of the same date lists these improvements:]

    • LinqToRdf Designer and VS.NET 2008 extension completely rewritten
    • LinqToRdf Installer now includes the installer of LinqToRdf Designer (at no extra cost)
    • Project and Item templates now installed as part of LinqToRdf Designer
    • Generated object and data properties now get their own EntitySet or EntityRef.
    • Generates LINQ to SQL-style DataContext objects to hide query creation. Much Cleaner.

    You can download LINQ to RDF v0.6 from GoogleCode.

    Note: I probably missed this because there's no obvious RSS/Atom feed for the Wandering Glitch blog, only a Twitter feed.

    Added: 5/4/2008 12:30 PDT

    This Nine-Minute Video Gets You Up and Running with the Google App Engine

    I received my Invitation to Try Google App Engine on Friday but didn't have time to try deploying my Google App Engine (GAE) SDK desktop test project until today. Fortunately, I found this 09:15 clip by a fast-talking Google Python guru on YouTube.

    The clip covers building a simple UI with a Django template that stores messages in the data store and retrieves text messages by author with a GQL query. The segment on deploying the app to GAE starts at about 08:25.

    Note: GoogleDevelopers has 122 videos about Google Web services, et al., including the Campfire One release presentation. If you're new to Python and like video tutorials, ShowMeDo is the place to start. Joscha Feth's Google App Engine & eclipse (PyDev) post has fully illustrated instructions for getting code completion with Eclipse, PyDev, and the GAE working.

    As time permits, I plan to determine whether GAE is a contender for "data store in the cloud" status and a viable competitor to SQL Server Data Services.

    Added: 5/4/2008 12:30 PDT

    Colin Meek: Composing LINQ to Entities Predicates

    In his LINQ to Entities: Combining Predicates post of May 2, 2008, Colin offers three choices to compensate for LINQ's lack of an Or operator when composing predicates:

    1. Chain Unions instead of Where clauses, which is inefficient.
    2. Build the predicate by hand with ParameterExpression and Expression statements, which is a pain.
    3. Write a utility function called Compose() to implement LINQ to Entities-friendly And and Or builder methods by leveraging the ParameterRebinder implementation of Matt Warren's Expression Visitor from his IQuerable Providers series.

    Interesting approach.

    Added: 5/3/2008 11:45 PDT

    Live Mesh and LINQ to Mesh Updates

    Live Mesh Blog and Forum

    The Live Mesh Blog has a detailed Behind Live Mesh: How we run cloud services post of April 30, 2008 by dev lead Alex Mallet.

    Early Live Mesh adopters don't seem to have found the Live Mesh Forum. It had only 145 users as of May 3, 2008 10:00 PDT.

    LINQ to Mesh (From Ori Amiga's Channel9 Video)

    The Mesh Operating Environment (MOE) SDK currently has Silverlight, Javascript and desktop C# libraries. (The SDK also supports IronPython, as Ori demonstrated, but not VB.) Unfortunately, the Mesh team won't say when the SDK might be available, other than vague references to PDC 2008.

    Here's the sample code for a LINQ to Mesh query against a Mesh object that Ori didn't attempt to execute because of a bug found earlier (~50:00):

    Mesh mesh = Mesh.Load(new Uri(@"https://preview/mesh.com"), 
                    new NetworkCredential("someone@somewhere.com", "Basic", myCred))
    
    var meshQuery = from meshObject in mesh.CreateQuery<CoreObject>()
                    where meshObject.Title == "title"
                    orderby meshObject.Title
                    select meshObject;

    According to Ori at ~51:00, "the query processor can figure out three things:

    1. Which part of the query can execute most efficiently in our back-end storage using fine-grained indices in the cloud and execute that query as close to the data as possible.
    2. In our Mesh Operating Environment, we can keep on processing and linking and querying over that data to answer the question you're asking in the LINQ query.
    3. And you can query over the data in your local machine."

    SSDS and Live Mesh

    Jamie Thomson's SSDS and Mesh post of May 1, 2008 proposes using Live Mesh to sync SSDS data, perhaps even between two Authorities. Here's the story on potential SSDS and Live Mesh interop:

    • Pablo Castro and the Astoria team are working on a sync model for "Astoria Offline."
    • The SSDS team said they "will support the full EDM/EF/ADO.Net V3 model in due time."
    • Nigel Ellis demonstrated in his Introducing SQL Server Data Services session at MIX08 using the Sync Framework to synchronize vCard contact data between Microsoft Access 2007 and SSDS v1.
    • Francois Ajenstadt, director of project management for SQL Server, said "The goal is to bring the API's between SSDS and Astoria closer together closer to Release."
    • Ari Amiga says the Mesh team has been "working a lot with the Astoria team to make sure that our query syntax is the same, our URL syntax is the same, so it all looks nice and beautiful."
    • Astoria now uses, Mesh supports and SSDS will support the Atom Publication Protocol (AtomPub).

    Added: 5/3/2008 10:30 PDT

    ADO.NET Data Services Article in Visual Studio Magazine

    My "Manipulate Data in the Cloud with ADO.NET [Data Services]" is the cover story for Visual Studio Magazine's May 2008 issue. Here's the deck:

    ADO.NET Data Services (formerly code-named "Project Astoria") delivers data from relational tables and Windows Live services to Web mashups and Visual Studio 2008 projects, including ASP.NET AJAX and Silverlight 2.0 rich Internet applications, as Representational State Transfer (REST) resources over HTTP in response to URI-based requests or LINQ to REST queries.

    Mesh Connection: At about 50:00 into the Ori Amiga: Programming the Mesh Channel 9 video segment of April 24, 2008 Ori mentions that the Mesh team is working with the Astoria folks to make sure their query and URL syntaxes are the same.

    Related Topics: John Udell suggests taking advantage of Astoria's record-level URL addressability to implement loosely-coupled collaborative list-making in his Stonewall Farm, Darby Brook Farm, and the collaborative curation of data post of May 2, 2008. Because of its flexible entity feature (ad-hoc addition of attributes to an entity) SQL Server Data Services might be even a better choice when the SSDS team enables offering public read-only access to a container.

    Moved: 5/3/2008 to Manipulate Data in the Cloud with ADO.NET [Data Services] due to length.

    Kevin Hoffman Releases Continuous LINQ (CLINQ) v.1.1

    According to Kevin's CLINQ v1.1.0.0 Released! post of May 2, 2008, CLINQ 1.1 now includes:

    • Support for Continuous Aggregation. Now, in addition to being able to have your result sets automatically update themselves in response to changes in the source set as well as changes to items in the source set, you can have aggregate scalar values that continuously update in the same fashion. The following is a list of the supported aggregation types that can now be done continuously:
      • Average
      • Min
      • Max
      • Sum
      • Standard Deviation
      • Count
    • Brand new demo application. This demo application not only shows off the power of continuous queries and WPF data binding, but also shows you how to use continuous aggregates, create your own continuous aggregates, and how to databind a WPF GUI to a continuous aggregate value.
    His post has a screen shot of the Stock Monitor demo application in action.

    Added: 5/2/2008 10:30 PDT

    Jeff Currier Wants Questions to Address in SSDS Best Practices Tech*Ed Session

    Jeff says in his Speaking at TechEd post of May 1, 2008:

    I'm heading down to Orlando in a couple of weeks to give a talk about best practices when it comes to SSDS.  I'm working on my talk outline and was curious if there were any topics in particular that the community wanted to hear about in the talk?

    I've posted my topics in a comment.

    Jeff's session is "Best Practices in Building Applications with Microsoft SQL Server Data Services," which has the following description:

    This interactive session provides a hands-on roadmap for developing and managing applications that use Microsoft SQL Server Data Services (SSDS), details best coding practices, and answers questions related to using on-demand storage services for business solutions.

    This appears to be the sole SSDS session at Tech*Ed 2008.

    Added: 5/2/2008 10:00 PDT

    Popularity of SaaS/PaaS and Web Services/SOA Gain 1% Over 2006 According to McKinsey/Sandhill Survey

    This 19-page Enterprise Software Customer Survey 2008 report by consultants McKinsey & Co. and Sandhill Partners finds that:

    Innovation in the software industry is on the upswing, with Software as a Service (SaaS) being a key driver. The SaaS model is becoming mainstream and this has led to the rise of a new generation of SaaS platforms (also referred to in the industry as Platform as a Service – PaaS).

    The distribution of 857 responses to "Please select the most important trend impacting your business" are shown in the following table for 2006 and 2008:

    Most Important Trend, Percent 2006 2008
    SaaS/SaaS or PaaS Platform 30 31
    Web Services/Service Oriented Architecture 24 25
    Open Source 10 8
    Offshoring/Globalization 15 13
    Software Industry Consolidation 17 7
    Others 4 16

    A detailed analysis of SaaS/PaaS platforms, which include "cloud computing" starts on page 5. Page 6 concludes:

    The momentum toward adoption of SaaS platforms is surprising. Nearly three-quarters of the companies surveyed prefer to adopt platforms in at least one of the three archetypes we identify here.

    For platform vendors, the only falloff in interest comes at the largest enterprises, those employing more than 25,000 people. In short, nearly every company – or division of a larger enterprise – is a customer or a prospect for SaaS platforms.

    Exhibits on pages 6 - 9 provide additional details on interest in various models SaaS/PaaS models.

    BEA's Understanding the Cloud Computing/SaaS/PaaS markets: a Map of the Players in the Industry post of May 2, 2008 by Peter Laird and Kent Dickson has clear definitions of cloud computing, SaaS, PaaS, and Core Cloud Services, as well as a map and list of major players with links to their sites.

    Added: 5/2/2008 11:30 PST

    SSDS Finally Provisioning Private Beta Users at a Faster Pace

    KellyAlt says in Onboarding early beta customers of May 2, 2008:

    Over the past 4 weeks, we have been onboarding customers slowly.  Since the response to our restricted beta invitation was quite overwhelming, quite a few of you will experience some delays in getting an account.  The SSDS team is doing everything possible to get you onboarded as soon as possible.  I am happy to say that I am seeing the pace pick up a bit over the last week.

    I've been working with SSDS for about three weeks and have written a WinForm test harness to give SSDS v1 a thorough workout. Here's the UI when using the REST protocol to upload a Northwind Employee entity with a base64Binary-encoded bitmap:

    Watch for my "Test-Drive SQL Server Data Services" feature article coming in the July 2008 issue of Visual Studio Magazine, which will include complete C# source code for the test harness.

    Added: 5/2/2008 08:30 PDT

    Ryan Dunn Interviews Tudor Toma and Soumitra Sangupta About the Business Value of SSDS

    In Channel9's Tudor Toma and Soumitra Sengupta: SQL Server Data Services Business Value segment of May 1, 2008 (28:19):

    Ryan sits down and talks with the Group Program Manager Tudor Toma and Architect Soumitra Sengupta about the business value of SSDS.

    Added: 5/1/2008 17:00 PDT

    David DeWinter Adapts T4 Templates to Generate T-SQL Stored Procedure Scripts for Entity Data Models

    The Text Template Transformation Toolkit (commonly called T4) is a free Microsoft code generation engine for VS 2005 and later that supports their Domain Specific Languages and Software Factories toolkits. The Hilton Giesenow and Oleg Sych blogs have posts about T4.

    David's Entity Framework Stored Procedure Generation post of April 26, 2008 describes the template:

    The T4 template we created is designed to be a general purpose way to generate CUD procedures for an Entity Framework model. ...

    The template not only generates EF-compliant sprocs, but it also considers only the tables that are in the SSDL of the model file. Unfortunately, the template must query the database (SQL Server 2005 only!) in order to make all the decisions necessary to create the output file. However, this is usually quite fast on generations other than the first one.

    The template would have been a big time saver when I wrote 40+ stored procedures for my forthcoming book's test project.

    Added: 5/1/2008 13:40 PDT

    Rick Strahl Posts LINQ to SQL and WCF JSON/REST Samples from His ASP.NET Connections Presentations

    Rick's ASP.NET Connections Slides and Samples Posted item of May 1, 2008 provides links to sample code and PowerPoint slides from his three presentations at the ASP.NET Connections conference in Orlando. Following are Rick's abstracts of the sessions:

    Building a LINQ to SQL Business Layer for ASP.NET Applications

    LINQ to SQL - although completely object based, is still little more than a sophisticated data access layer and so a business object layer is still needed to abstract business logic and provide common functionality that every business related entity requires. The business layer provides a few high level abstractions to the CRUD layer as well as a host of low level features that allow better control for low level data access in case LINQ to SQL queries are ill suited for queries and operations that cannot be performed with LINQ to SQL at all.

    This session and its sample code is the culmination of Rick's extensive writing about LINQ to SQL in enterprise-grade projects.

    WCF 3.5 JSON and REST Services

    WCF 3.5's AJAX support has been made nearly as easy and comprehensive as ASMX functionality and there are many options of how data can be accessed over HTTP now with official protocol support for the webHttpBinding. This session starts of with examples of pure REST URLS and demonstrates features like URL templating, different response formats (wrapped, bare, XML, JSON) as well as the various different options for serving in this fashion. There are also examples of serving up raw data such as images or HTML content out of the REST based API. The remainder of the session focuses on AJAX functionality and explores different ways that WCF services can be called.

    If you're interested in ADO.NET Data Objects, which support WCF JSON and REST protocols, don't miss this session.

    Ajax Alternatives: Using jQuery with ASP.NET

    Off-topic for this blog, but very interesting if you're into AJAX.

    Note: Slides are the last file in the ZIP containers.

    Frans Bouma Adds LINQ to SQL Refactoring and ASP.NET Dynamic Data Support to LLBLGen Pro

    LLBLGen Pro has its own native LINQ implementation, but Frans announces in his Linq to Sql support added to LLBLGen Pro post of May 1, 2008 that latest version (2.6 beta) of LLBLGen Pro includes templates for generating LINQ to SQL classes and mapping (*.dbml) files.

    This means you can use LLBLGen Pro's code generator to update your LINQ to SQL data model from SQL Server metadata automatically. Microsoft's LINQ to SQL implementation requires manually updating the data model for schema changes. (ADO.NET Entity Framework's Model Browser has an Update Model from Database context menu command.)

    Frans says, "The only downside is that you can't update your model in the Linq to Sql designer anymore. But, why would you?"

    LLBLGen Pro ASP.NET Dynamic Data Support

    Frans' Dynamic Data and 3rd party o/r mappers is a fact post of May 1, 2008 describes how he convinced Scott Guthrie to open ASP.NET Dynamic Data products to third-party object/relational mapping (O/RM) tools, which in turn enables substituting LLBLGen Pro for LINQ to SQL or Entity Framework.

    Steele Price Finds LINQ to SQL Frustrating

    In his Some of my frustrations with Linq to Sql post of May 1, 2008, Steel Price complains about:

    • Duplication of the "one" object of a many:one association (such as a Customer for a new Order) with the InsertOnSubmit() method if the entity has both an ID field and association.
    • Lack of a method of assuring that deletions precede insertions with multiple updates to the DataContext.
    • Loading an Association does not automatically set the ID if that field is also in the map.

    These are legitimate issues that the LINQ to SQL team should fix in VS 2008 SP1.

    LINQ to SQLite Accepted as a Google Summer of Code Project

    Kevin Kubasik, who wrote a fledgling LINQ to SQLite provider, reports in his Mono GSOC Projects: Linq to SQLite post of May 1, 2008 that he "noticed that one of the accepted proposals for the Mono project is to create a LINQ provider for SQLite."

    This project appears to be related to the "Linq to SQL for open source databases" topic of Mono's Student Projects page and is listed in Current Projects on Google Code's Mono Project page.

    An Open Source Project for a SQLMetal.exe and SQL Server Compact Edition 3.5 UI

    LINQ to SQL's graphic designer doesn't support SQL Server Compact Edition (SSCE) 3.5, so you must use the SQLMetal.exe command-line tool to create LINQ to SQL classes for *.sdf database files.

    J. Torres has started a open source project on CodePlex to create a front end for SQLMetal.exe that's compatible with SSCE 3.5.

    However, it's a good bet that SSCE 3.5 support will be included in VS 2008 SP1, so the project might have a short shelf life.

    Derek Whittaker Explains How to Group LINQ to SQL Sequences on Multiple Columns

    Derek explains in his Multi-Column Grouping with Linq2Sql post of April 30, 2008 how to write the LINQ to SQL equivalent of the following T-SQL query.

    SELECT  COUNT(*) AS Count,   
            cs.SendID,   
            cs.Name AS SendName,   
            cts.ListID,   
            cts.ListName,   
            ctom.EmailAddress   
    FROM    CampaignTrackingOpenedMail AS ctom   
            INNER JOIN CampaignTrackingSummary AS cts    
                ON ctom.CampaignTrackingSummaryID = cts.[ID]   
            INNER JOIN CampaignSend AS cs    
                ON cts.SendID = cs.SendID   
    GROUP BY cs.SendID,   
            cs.Name,   
            cts.ListID,   
            cts.ListName,   
            ctom.EmailAddress  

    The translation isn't obvious.

    Alex James Starts a Fantasy Football Project with Entity Framework as the Data Source

    Back in late March, Alex published his Statement of Intent:

    I'm going to start creating 'real world' applications using the Entity Framework, and I'm going to blog about all the tradeoffs I make, the hoops I have to jump through, the gotcha's I encounter, the workarounds, the design considerations etc.

    In Real world App - Part 1 - Choosing an Application of April 30, 2008, Alex decides on Fantasy Soccer (a.k.a. Fantasy Football).

    In Fantasy Soccer - Part 2 - an overview of the rules of May 1, 2008, Alex says:

    At this stage only one thing is certain, it will use the Entity Framework for data access.

    Fantasy Soccer - part 3 - Unit of Measure of May 3, 2008 discusses using the Entity Data Model's ComplexProperty feature to handle issues with English versus metric measurements and using a helper class to enable sorting by a scaled value, such as weight in lbs. or kg. (Stones for en-uk?>

    Updated: May 3, 2008

    The clip covers building a simple UI with a Django template that stores messages in the data store and retrieves text messages by author with a GQL query. The segment on deploying the app to GAE starts at about 08:25.

    Note: GoogleDevelopers has 122 videos about Google Web services, et al., including the Campfire One release presentation. If you're new to Python and like video tutorials, ShowMeDo is the place to start. Joscha Feth's Google App Engine & eclipse (PyDev) post has fully illustrated instructions for getting code completion with Eclipse, PyDev, and the GAE working.

    As time permits, I plan to determine whether GAE is a contender for "data store in the cloud" status and a viable competitor to SQL Server Data Services.

    Added: 5/4/2008 12:30 PDT

    Colin Meek: Composing LINQ to Entities Predicates

    In his LINQ to Entities: Combining Predicates post of May 2, 2008, Colin offers three choices to compensate for LINQ's lack of an Or operator when composing predicates:

    1. Chain Unions instead of Where clauses, which is inefficient.
    2. Build the predicate by hand with ParameterExpression and Expression statements, which is a pain.
    3. Write a utility function called Compose() to implement LINQ to Entities-friendly And and Or builder methods by leveraging the ParameterRebinder implementation of Matt Warren's Expression Visitor from his IQuerable Providers series.

    Interesting approach.

    Added: 5/3/2008 11:45 PDT

    Live Mesh and LINQ to Mesh Updates

    Live Mesh Blog and Forum

    The Live Mesh Blog has a detailed Behind Live Mesh: How we run cloud services post of April 30, 2008 by dev lead Alex Mallet.

    Early Live Mesh adopters don't seem to have found the Live Mesh Forum. It had only 145 users as of May 3, 2008 10:00 PDT.

    LINQ to Mesh (From Ori Amiga's Channel9 Video)

    The Mesh Operating Environment (MOE) SDK currently has Silverlight, Javascript and desktop C# libraries. (The SDK also supports IronPython, as Ori demonstrated, but not VB.) Unfortunately, the Mesh team won't say when the SDK might be available, other than vague references to PDC 2008.

    Here's the sample code for a LINQ to Mesh query against a Mesh object that Ori didn't attempt to execute because of a bug found earlier (~50:00):

    Mesh mesh = Mesh.Load(new Uri(@"https://preview/mesh.com"), 
                    new NetworkCredential("someone@somewhere.com", "Basic", myCred))
    
    var meshQuery = from meshObject in mesh.CreateQuery<CoreObject>()
                    where meshObject.Title == "title"
                    orderby meshObject.Title
                    select meshObject;

    According to Ori at ~51:00, "the query processor can figure out three things:

    1. Which part of the query can execute most efficiently in our back-end storage using fine-grained indices in the cloud and execute that query as close to the data as possible.
    2. In our Mesh Operating Environment, we can keep on processing and linking and querying over that data to answer the question you're asking in the LINQ query.
    3. And you can query over the data in your local machine."

    SSDS and Live Mesh

    Jamie Thomson's SSDS and Mesh post of May 1, 2008 proposes using Live Mesh to sync SSDS data, perhaps even between two Authorities. Here's the story on potential SSDS and Live Mesh interop:

    • Pablo Castro and the Astoria team are working on a sync model for "Astoria Offline."
    • The SSDS team said they "will support the full EDM/EF/ADO.Net V3 model in due time."
    • Nigel Ellis demonstrated in his Introducing SQL Server Data Services session at MIX08 using the Sync Framework to synchronize vCard contact data between Microsoft Access 2007 and SSDS v1.
    • Francois Ajenstadt, director of project management for SQL Server, said "The goal is to bring the API's between SSDS and Astoria closer together closer to Release."
    • Ari Amiga says the Mesh team has been "working a lot with the Astoria team to make sure that our query syntax is the same, our URL syntax is the same, so it all looks nice and beautiful."
    • Astoria now uses, Mesh supports and SSDS will support the Atom Publication Protocol (AtomPub).

    Added: 5/3/2008 10:30 PDT

    ADO.NET Data Services Article in Visual Studio Magazine

    My "Manipulate Data in the Cloud with ADO.NET [Data Services]" is the cover story for Visual Studio Magazine's May 2008 issue. Here's the deck:

    ADO.NET Data Services (formerly code-named "Project Astoria") delivers data from relational tables and Windows Live services to Web mashups and Visual Studio 2008 projects, including ASP.NET AJAX and Silverlight 2.0 rich Internet applications, as Representational State Transfer (REST) resources over HTTP in response to URI-based requests or LINQ to REST queries.

    Mesh Connection: At about 50:00 into the Ori Amiga: Programming the Mesh Channel 9 video segment of April 24, 2008 Ori mentions that the Mesh team is working with the Astoria folks to make sure their query and URL syntaxes are the same.

    Related Topics: John Udell suggests taking advantage of Astoria's record-level URL addressability to implement loosely-coupled collaborative list-making in his Stonewall Farm, Darby Brook Farm, and the collaborative curation of data post of May 2, 2008. Because of its flexible entity feature (ad-hoc addition of attributes to an entity) SQL Server Data Services might be even a better choice when the SSDS team enables offering public read-only access to a container.

    Moved: 5/3/2008 to Manipulate Data in the Cloud with ADO.NET [Data Services] due to length.

    Kevin Hoffman Releases Continuous LINQ (CLINQ) v.1.1

    According to Kevin's CLINQ v1.1.0.0 Released! post of May 2, 2008, CLINQ 1.1 now includes:

    • Support for Continuous Aggregation. Now, in addition to being able to have your result sets automatically update themselves in response to changes in the source set as well as changes to items in the source set, you can have aggregate scalar values that continuously update in the same fashion. The following is a list of the supported aggregation types that can now be done continuously:
      • Average
      • Min
      • Max
      • Sum
      • Standard Deviation
      • Count
    • Brand new demo application. This demo application not only shows off the power of continuous queries and WPF data binding, but also shows you how to use continuous aggregates, create your own continuous aggregates, and how to databind a WPF GUI to a continuous aggregate value.
    His post has a screen shot of the Stock Monitor demo application in action.

    Added: 5/2/2008 10:30 PDT

    Jeff Currier Wants Questions to Address in SSDS Best Practices Tech*Ed Session

    Jeff says in his Speaking at TechEd post of May 1, 2008:

    I'm heading down to Orlando in a couple of weeks to give a talk about best practices when it comes to SSDS.  I'm working on my talk outline and was curious if there were any topics in particular that the community wanted to hear about in the talk?

    I've posted my topics in a comment.

    Jeff's session is "Best Practices in Building Applications with Microsoft SQL Server Data Services," which has the following description:

    This interactive session provides a hands-on roadmap for developing and managing applications that use Microsoft SQL Server Data Services (SSDS), details best coding practices, and answers questions related to using on-demand storage services for business solutions.

    This appears to be the sole SSDS session at Tech*Ed 2008.

    Added: 5/2/2008 10:00 PDT

    Popularity of SaaS/PaaS and Web Services/SOA Gain 1% Over 2006 According to McKinsey/Sandhill Survey

    This 19-page Enterprise Software Customer Survey 2008 report by consultants McKinsey & Co. and Sandhill Partners finds that:

    Innovation in the software industry is on the upswing, with Software as a Service (SaaS) being a key driver. The SaaS model is becoming mainstream and this has led to the rise of a new generation of SaaS platforms (also referred to in the industry as Platform as a Service – PaaS).

    The distribution of 857 responses to "Please select the most important trend impacting your business" are shown in the following table for 2006 and 2008:

    Most Important Trend, Percent 2006 2008
    SaaS/SaaS or PaaS Platform 30 31
    Web Services/Service Oriented Architecture 24 25
    Open Source 10 8
    Offshoring/Globalization 15 13
    Software Industry Consolidation 17 7
    Others 4 16

    A detailed analysis of SaaS/PaaS platforms, which include "cloud computing" starts on page 5. Page 6 concludes:

    The momentum toward adoption of SaaS platforms is surprising. Nearly three-quarters of the companies surveyed prefer to adopt platforms in at least one of the three archetypes we identify here.

    For platform vendors, the only falloff in interest comes at the largest enterprises, those employing more than 25,000 people. In short, nearly every company – or division of a larger enterprise – is a customer or a prospect for SaaS platforms.

    Exhibits on pages 6 - 9 provide additional details on interest in various models SaaS/PaaS models.

    BEA's Understanding the Cloud Computing/SaaS/PaaS markets: a Map of the Players in the Industry post of May 2, 2008 by Peter Laird and Kent Dickson has clear definitions of cloud computing, SaaS, PaaS, and Core Cloud Services, as well as a map and list of major players with links to their sites.

    Added: 5/2/2008 11:30 PST

    SSDS Finally Provisioning Private Beta Users at a Faster Pace

    KellyAlt says in Onboarding early beta customers of May 2, 2008:

    Over the past 4 weeks, we have been onboarding customers slowly.  Since the response to our restricted beta invitation was quite overwhelming, quite a few of you will experience some delays in getting an account.  The SSDS team is doing everything possible to get you onboarded as soon as possible.  I am happy to say that I am seeing the pace pick up a bit over the last week.

    I've been working with SSDS for about three weeks and have written a WinForm test harness to give SSDS v1 a thorough workout. Here's the UI when using the REST protocol to upload a Northwind Employee entity with a base64Binary-encoded bitmap:

    Watch for my "Test-Drive SQL Server Data Services" feature article coming in the July 2008 issue of Visual Studio Magazine, which will include complete C# source code for the test harness.

    Added: 5/2/2008 08:30 PDT

    Ryan Dunn Interviews Tudor Toma and Soumitra Sangupta About the Business Value of SSDS

    In Channel9's Tudor Toma and Soumitra Sengupta: SQL Server Data Services Business Value segment of May 1, 2008 (28:19):

    Ryan sits down and talks with the Group Program Manager Tudor Toma and Architect Soumitra Sengupta about the business value of SSDS.

    Added: 5/1/2008 17:00 PDT

    David DeWinter Adapts T4 Templates to Generate T-SQL Stored Procedure Scripts for Entity Data Models

    The Text Template Transformation Toolkit (commonly called T4) is a free Microsoft code generation engine for VS 2005 and later that supports their Domain Specific Languages and Software Factories toolkits. The Hilton Giesenow and Oleg Sych blogs have posts about T4.

    David's Entity Framework Stored Procedure Generation post of April 26, 2008 describes the template:

    The T4 template we created is designed to be a general purpose way to generate CUD procedures for an Entity Framework model. ...

    The template not only generates EF-compliant sprocs, but it also considers only the tables that are in the SSDL of the model file. Unfortunately, the template must query the database (SQL Server 2005 only!) in order to make all the decisions necessary to create the output file. However, this is usually quite fast on generations other than the first one.

    The template would have been a big time saver when I wrote 40+ stored procedures for my forthcoming book's test project.

    Added: 5/1/2008 13:40 PDT

    Rick Strahl Posts LINQ to SQL and WCF JSON/REST Samples from His ASP.NET Connections Presentations

    Rick's ASP.NET Connections Slides and Samples Posted item of May 1, 2008 provides links to sample code and PowerPoint slides from his three presentations at the ASP.NET Connections conference in Orlando. Following are Rick's abstracts of the sessions:

    Building a LINQ to SQL Business Layer for ASP.NET Applications

    LINQ to SQL - although completely object based, is still little more than a sophisticated data access layer and so a business object layer is still needed to abstract business logic and provide common functionality that every business related entity requires. The business layer provides a few high level abstractions to the CRUD layer as well as a host of low level features that allow better control for low level data access in case LINQ to SQL queries are ill suited for queries and operations that cannot be performed with LINQ to SQL at all.

    This session and its sample code is the culmination of Rick's extensive writing about LINQ to SQL in enterprise-grade projects.

    WCF 3.5 JSON and REST Services

    WCF 3.5's AJAX support has been made nearly as easy and comprehensive as ASMX functionality and there are many options of how data can be accessed over HTTP now with official protocol support for the webHttpBinding. This session starts of with examples of pure REST URLS and demonstrates features like URL templating, different response formats (wrapped, bare, XML, JSON) as well as the various different options for serving in this fashion. There are also examples of serving up raw data such as images or HTML content out of the REST based API. The remainder of the session focuses on AJAX functionality and explores different ways that WCF services can be called.

    If you're interested in ADO.NET Data Objects, which support WCF JSON and REST protocols, don't miss this session.

    Ajax Alternatives: Using jQuery with ASP.NET

    Off-topic for this blog, but very interesting if you're into AJAX.

    Note: Slides are the last file in the ZIP containers.

    Frans Bouma Adds LINQ to SQL Refactoring and ASP.NET Dynamic Data Support to LLBLGen Pro

    LLBLGen Pro has its own native LINQ implementation, but Frans announces in his Linq to Sql support added to LLBLGen Pro post of May 1, 2008 that latest version (2.6 beta) of LLBLGen Pro includes templates for generating LINQ to SQL classes and mapping (*.dbml) files.

    This means you can use LLBLGen Pro's code generator to update your LINQ to SQL data model from SQL Server metadata automatically. Microsoft's LINQ to SQL implementation requires manually updating the data model for schema changes. (ADO.NET Entity Framework's Model Browser has an Update Model from Database context menu command.)

    Frans says, "The only downside is that you can't update your model in the Linq to Sql designer anymore. But, why would you?"

    LLBLGen Pro ASP.NET Dynamic Data Support

    Frans' Dynamic Data and 3rd party o/r mappers is a fact post of May 1, 2008 describes how he convinced Scott Guthrie to open ASP.NET Dynamic Data products to third-party object/relational mapping (O/RM) tools, which in turn enables substituting LLBLGen Pro for LINQ to SQL or Entity Framework.

    Steele Price Finds LINQ to SQL Frustrating

    In his Some of my frustrations with Linq to Sql post of May 1, 2008, Steel Price complains about:

    • Duplication of the "one" object of a many:one association (such as a Customer for a new Order) with the InsertOnSubmit() method if the entity has both an ID field and association.
    • Lack of a method of assuring that deletions precede insertions with multiple updates to the DataContext.
    • Loading an Association does not automatically set the ID if that field is also in the map.

    These are legitimate issues that the LINQ to SQL team should fix in VS 2008 SP1.

    LINQ to SQLite Accepted as a Google Summer of Code Project

    Kevin Kubasik, who wrote a fledgling LINQ to SQLite provider, reports in his Mono GSOC Projects: Linq to SQLite post of May 1, 2008 that he "noticed that one of the accepted proposals for the Mono project is to create a LINQ provider for SQLite."

    This project appears to be related to the "Linq to SQL for open source databases" topic of Mono's Student Projects page and is listed in Current Projects on Google Code's Mono Project page.

    An Open Source Project for a SQLMetal.exe and SQL Server Compact Edition 3.5 UI

    LINQ to SQL's graphic designer doesn't support SQL Server Compact Edition (SSCE) 3.5, so you must use the SQLMetal.exe command-line tool to create LINQ to SQL classes for *.sdf database files.

    J. Torres has started a open source project on CodePlex to create a front end for SQLMetal.exe that's compatible with SSCE 3.5.

    However, it's a good bet that SSCE 3.5 support will be included in VS 2008 SP1, so the project might have a short shelf life.

    Derek Whittaker Explains How to Group LINQ to SQL Sequences on Multiple Columns

    Derek explains in his Multi-Column Grouping with Linq2Sql post of April 30, 2008 how to write the LINQ to SQL equivalent of the following T-SQL query.

    SELECT  COUNT(*) AS Count,   
            cs.SendID,   
            cs.Name AS SendName,   
            cts.ListID,   
            cts.ListName,   
            ctom.EmailAddress   
    FROM    CampaignTrackingOpenedMail AS ctom   
            INNER JOIN CampaignTrackingSummary AS cts    
                ON ctom.CampaignTrackingSummaryID = cts.[ID]   
            INNER JOIN CampaignSend AS cs    
                ON cts.SendID = cs.SendID   
    GROUP BY cs.SendID,   
            cs.Name,   
            cts.ListID,   
            cts.ListName,   
            ctom.EmailAddress  

    The translation isn't obvious.

    Alex James Starts a Fantasy Football Project with Entity Framework as the Data Source

    Back in late March, Alex published his Statement of Intent:

    I'm going to start creating 'real world' applications using the Entity Framework, and I'm going to blog about all the tradeoffs I make, the hoops I have to jump through, the gotcha's I encounter, the workarounds, the design considerations etc.

    In Real world App - Part 1 - Choosing an Application of April 30, 2008, Alex decides on Fantasy Soccer (a.k.a. Fantasy Football).

    In Fantasy Soccer - Part 2 - an overview of the rules of May 1, 2008, Alex says:

    At this stage only one thing is certain, it will use the Entity Framework for data access.

    Fantasy Soccer - part 3 - Unit of Measure of May 3, 2008 discusses using the Entity Data Model's ComplexProperty feature to handle issues with English versus metric measurements and using a helper class to enable sorting by a scaled value, such as weight in lbs. or kg. (Stones for en-uk?>

    Updated: May 3, 2008

    The clip covers building a simple UI with a Django template that stores messages in the data store and retrieves text messages by author with a GQL query. The segment on deploying the app to GAE starts at about 08:25.

    Note: GoogleDevelopers has 122 videos about Google Web services, et al., including the Campfire One release presentation. If you're new to Python and like video tutorials, ShowMeDo is the place to start. Joscha Feth's Google App Engine & eclipse (PyDev) post has fully illustrated instructions for getting code completion with Eclipse, PyDev, and the GAE working.

    As time permits, I plan to determine whether GAE is a contender for "data store in the cloud" status and a viable competitor to SQL Server Data Services.

    Added: 5/4/2008 12:30 PDT

    Colin Meek: Composing LINQ to Entities Predicates

    In his LINQ to Entities: Combining Predicates post of May 2, 2008, Colin offers three choices to compensate for LINQ's lack of an Or operator when composing predicates:

    1. Chain Unions instead of Where clauses, which is inefficient.
    2. Build the predicate by hand with ParameterExpression and Expression statements, which is a pain.
    3. Write a utility function called Compose() to implement LINQ to Entities-friendly And and Or builder methods by leveraging the ParameterRebinder implementation of Matt Warren's Expression Visitor from his IQuerable Providers series.

    Interesting approach.

    Added: 5/3/2008 11:45 PDT

    Live Mesh and LINQ to Mesh Updates

    Live Mesh Blog and Forum

    The Live Mesh Blog has a detailed Behind Live Mesh: How we run cloud services post of April 30, 2008 by dev lead Alex Mallet.

    Early Live Mesh adopters don't seem to have found the Live Mesh Forum. It had only 145 users as of May 3, 2008 10:00 PDT.

    LINQ to Mesh (From Ori Amiga's Channel9 Video)

    The Mesh Operating Environment (MOE) SDK currently has Silverlight, Javascript and desktop C# libraries. (The SDK also supports IronPython, as Ori demonstrated, but not VB.) Unfortunately, the Mesh team won't say when the SDK might be available, other than vague references to PDC 2008.

    Here's the sample code for a LINQ to Mesh query against a Mesh object that Ori didn't attempt to execute because of a bug found earlier (~50:00):

    Mesh mesh = Mesh.Load(new Uri(@"https://preview/mesh.com"), 
                    new NetworkCredential("someone@somewhere.com", "Basic", myCred))
    
    var meshQuery = from meshObject in mesh.CreateQuery<CoreObject>()
                    where meshObject.Title == "title"
                    orderby meshObject.Title
                    select meshObject;

    According to Ori at ~51:00, "the query processor can figure out three things:

    1. Which part of the query can execute most efficiently in our back-end storage using fine-grained indices in the cloud and execute that query as close to the data as possible.
    2. In our Mesh Operating Environment, we can keep on processing and linking and querying over that data to answer the question you're asking in the LINQ query.
    3. And you can query over the data in your local machine."

    SSDS and Live Mesh

    Jamie Thomson's SSDS and Mesh post of May 1, 2008 proposes using Live Mesh to sync SSDS data, perhaps even between two Authorities. Here's the story on potential SSDS and Live Mesh interop:

    • Pablo Castro and the Astoria team are working on a sync model for "Astoria Offline."
    • The SSDS team said they "will support the full EDM/EF/ADO.Net V3 model in due time."
    • Nigel Ellis demonstrated in his Introducing SQL Server Data Services session at MIX08 using the Sync Framework to synchronize vCard contact data between Microsoft Access 2007 and SSDS v1.
    • Francois Ajenstadt, director of project management for SQL Server, said "The goal is to bring the API's between SSDS and Astoria closer together closer to Release."
    • Ari Amiga says the Mesh team has been "working a lot with the Astoria team to make sure that our query syntax is the same, our URL syntax is the same, so it all looks nice and beautiful."
    • Astoria now uses, Mesh supports and SSDS will support the Atom Publication Protocol (AtomPub).

    Added: 5/3/2008 10:30 PDT

    ADO.NET Data Services Article in Visual Studio Magazine

    My "Manipulate Data in the Cloud with ADO.NET [Data Services]" is the cover story for Visual Studio Magazine's May 2008 issue. Here's the deck:

    ADO.NET Data Services (formerly code-named "Project Astoria") delivers data from relational tables and Windows Live services to Web mashups and Visual Studio 2008 projects, including ASP.NET AJAX and Silverlight 2.0 rich Internet applications, as Representational State Transfer (REST) resources over HTTP in response to URI-based requests or LINQ to REST queries.

    Mesh Connection: At about 50:00 into the Ori Amiga: Programming the Mesh Channel 9 video segment of April 24, 2008 Ori mentions that the Mesh team is working with the Astoria folks to make sure their query and URL syntaxes are the same.

    Related Topics: John Udell suggests taking advantage of Astoria's record-level URL addressability to implement loosely-coupled collaborative list-making in his Stonewall Farm, Darby Brook Farm, and the collaborative curation of data post of May 2, 2008. Because of its flexible entity feature (ad-hoc addition of attributes to an entity) SQL Server Data Services might be even a better choice when the SSDS team enables offering public read-only access to a container.

    Moved: 5/3/2008 to Manipulate Data in the Cloud with ADO.NET [Data Services] due to length.

    Kevin Hoffman Releases Continuous LINQ (CLINQ) v.1.1

    According to Kevin's CLINQ v1.1.0.0 Released! post of May 2, 2008, CLINQ 1.1 now includes:

    • Support for Continuous Aggregation. Now, in addition to being able to have your result sets automatically update themselves in response to changes in the source set as well as changes to items in the source set, you can have aggregate scalar values that continuously update in the same fashion. The following is a list of the supported aggregation types that can now be done continuously:
      • Average
      • Min
      • Max
      • Sum
      • Standard Deviation
      • Count
    • Brand new demo application. This demo application not only shows off the power of continuous queries and WPF data binding, but also shows you how to use continuous aggregates, create your own continuous aggregates, and how to databind a WPF GUI to a continuous aggregate value.
    His post has a screen shot of the Stock Monitor demo application in action.

    Added: 5/2/2008 10:30 PDT

    Jeff Currier Wants Questions to Address in SSDS Best Practices Tech*Ed Session

    Jeff says in his Speaking at TechEd post of May 1, 2008:

    I'm heading down to Orlando in a couple of weeks to give a talk about best practices when it comes to SSDS.  I'm working on my talk outline and was curious if there were any topics in particular that the community wanted to hear about in the talk?

    I've posted my topics in a comment.

    Jeff's session is "Best Practices in Building Applications with Microsoft SQL Server Data Services," which has the following description:

    This interactive session provides a hands-on roadmap for developing and managing applications that use Microsoft SQL Server Data Services (SSDS), details best coding practices, and answers questions related to using on-demand storage services for business solutions.

    This appears to be the sole SSDS session at Tech*Ed 2008.

    Added: 5/2/2008 10:00 PDT

    Popularity of SaaS/PaaS and Web Services/SOA Gain 1% Over 2006 According to McKinsey/Sandhill Survey

    This 19-page Enterprise Software Customer Survey 2008 report by consultants McKinsey & Co. and Sandhill Partners finds that:

    Innovation in the software industry is on the upswing, with Software as a Service (SaaS) being a key driver. The SaaS model is becoming mainstream and this has led to the rise of a new generation of SaaS platforms (also referred to in the industry as Platform as a Service – PaaS).

    The distribution of 857 responses to "Please select the most important trend impacting your business" are shown in the following table for 2006 and 2008:

    Most Important Trend, Percent 2006 2008
    SaaS/SaaS or PaaS Platform 30 31
    Web Services/Service Oriented Architecture 24 25
    Open Source 10 8
    Offshoring/Globalization 15 13
    Software Industry Consolidation 17 7
    Others 4 16

    A detailed analysis of SaaS/PaaS platforms, which include "cloud computing" starts on page 5. Page 6 concludes:

    The momentum toward adoption of SaaS platforms is surprising. Nearly three-quarters of the companies surveyed prefer to adopt platforms in at least one of the three archetypes we identify here.

    For platform vendors, the only falloff in interest comes at the largest enterprises, those employing more than 25,000 people. In short, nearly every company – or division of a larger enterprise – is a customer or a prospect for SaaS platforms.

    Exhibits on pages 6 - 9 provide additional details on interest in various models SaaS/PaaS models.

    BEA's Understanding the Cloud Computing/SaaS/PaaS markets: a Map of the Players in the Industry post of May 2, 2008 by Peter Laird and Kent Dickson has clear definitions of cloud computing, SaaS, PaaS, and Core Cloud Services, as well as a map and list of major players with links to their sites.

    Added: 5/2/2008 11:30 PST

    SSDS Finally Provisioning Private Beta Users at a Faster Pace

    KellyAlt says in Onboarding early beta customers of May 2, 2008:

    Over the past 4 weeks, we have been onboarding customers slowly.  Since the response to our restricted beta invitation was quite overwhelming, quite a few of you will experience some delays in getting an account.  The SSDS team is doing everything possible to get you onboarded as soon as possible.  I am happy to say that I am seeing the pace pick up a bit over the last week.

    I've been working with SSDS for about three weeks and have written a WinForm test harness to give SSDS v1 a thorough workout. Here's the UI when using the REST protocol to upload a Northwind Employee entity with a base64Binary-encoded bitmap:

    Watch for my "Test-Drive SQL Server Data Services" feature article coming in the July 2008 issue of Visual Studio Magazine, which will include complete C# source code for the test harness.

    Added: 5/2/2008 08:30 PDT

    Ryan Dunn Interviews Tudor Toma and Soumitra Sangupta About the Business Value of SSDS

    In Channel9's Tudor Toma and Soumitra Sengupta: SQL Server Data Services Business Value segment of May 1, 2008 (28:19):

    Ryan sits down and talks with the Group Program Manager Tudor Toma and Architect Soumitra Sengupta about the business value of SSDS.

    Added: 5/1/2008 17:00 PDT

    David DeWinter Adapts T4 Templates to Generate T-SQL Stored Procedure Scripts for Entity Data Models

    The Text Template Transformation Toolkit (commonly called T4) is a free Microsoft code generation engine for VS 2005 and later that supports their Domain Specific Languages and Software Factories toolkits. The Hilton Giesenow and Oleg Sych blogs have posts about T4.

    David's Entity Framework Stored Procedure Generation post of April 26, 2008 describes the template:

    The T4 template we created is designed to be a general purpose way to generate CUD procedures for an Entity Framework model. ...

    The template not only generates EF-compliant sprocs, but it also considers only the tables that are in the SSDL of the model file. Unfortunately, the template must query the database (SQL Server 2005 only!) in order to make all the decisions necessary to create the output file. However, this is usually quite fast on generations other than the first one.

    The template would have been a big time saver when I wrote 40+ stored procedures for my forthcoming book's test project.

    Added: 5/1/2008 13:40 PDT

    Rick Strahl Posts LINQ to SQL and WCF JSON/REST Samples from His ASP.NET Connections Presentations

    Rick's ASP.NET Connections Slides and Samples Posted item of May 1, 2008 provides links to sample code and PowerPoint slides from his three presentations at the ASP.NET Connections conference in Orlando. Following are Rick's abstracts of the sessions:

    Building a LINQ to SQL Business Layer for ASP.NET Applications

    LINQ to SQL - although completely object based, is still little more than a sophisticated data access layer and so a business object layer is still needed to abstract business logic and provide common functionality that every business related entity requires. The business layer provides a few high level abstractions to the CRUD layer as well as a host of low level features that allow better control for low level data access in case LINQ to SQL queries are ill suited for queries and operations that cannot be performed with LINQ to SQL at all.

    This session and its sample code is the culmination of Rick's extensive writing about LINQ to SQL in enterprise-grade projects.

    WCF 3.5 JSON and REST Services

    WCF 3.5's AJAX support has been made nearly as easy and comprehensive as ASMX functionality and there are many options of how data can be accessed over HTTP now with official protocol support for the webHttpBinding. This session starts of with examples of pure REST URLS and demonstrates features like URL templating, different response formats (wrapped, bare, XML, JSON) as well as the various different options for serving in this fashion. There are also examples of serving up raw data such as images or HTML content out of the REST based API. The remainder of the session focuses on AJAX functionality and explores different ways that WCF services can be called.

    If you're interested in ADO.NET Data Objects, which support WCF JSON and REST protocols, don't miss this session.

    Ajax Alternatives: Using jQuery with ASP.NET

    Off-topic for this blog, but very interesting if you're into AJAX.

    Note: Slides are the last file in the ZIP containers.

    Frans Bouma Adds LINQ to SQL Refactoring and ASP.NET Dynamic Data Support to LLBLGen Pro

    LLBLGen Pro has its own native LINQ implementation, but Frans announces in his Linq to Sql support added to LLBLGen Pro post of May 1, 2008 that latest version (2.6 beta) of LLBLGen Pro includes templates for generating LINQ to SQL classes and mapping (*.dbml) files.

    This means you can use LLBLGen Pro's code generator to update your LINQ to SQL data model from SQL Server metadata automatically. Microsoft's LINQ to SQL implementation requires manually updating the data model for schema changes. (ADO.NET Entity Framework's Model Browser has an Update Model from Database context menu command.)

    Frans says, "The only downside is that you can't update your model in the Linq to Sql designer anymore. But, why would you?"

    LLBLGen Pro ASP.NET Dynamic Data Support

    Frans' Dynamic Data and 3rd party o/r mappers is a fact post of May 1, 2008 describes how he convinced Scott Guthrie to open ASP.NET Dynamic Data products to third-party object/relational mapping (O/RM) tools, which in turn enables substituting LLBLGen Pro for LINQ to SQL or Entity Framework.

    Steele Price Finds LINQ to SQL Frustrating

    In his Some of my frustrations with Linq to Sql post of May 1, 2008, Steel Price complains about:

    • Duplication of the "one" object of a many:one association (such as a Customer for a new Order) with the InsertOnSubmit() method if the entity has both an ID field and association.
    • Lack of a method of assuring that deletions precede insertions with multiple updates to the DataContext.
    • Loading an Association does not automatically set the ID if that field is also in the map.

    These are legitimate issues that the LINQ to SQL team should fix in VS 2008 SP1.

    LINQ to SQLite Accepted as a Google Summer of Code Project

    Kevin Kubasik, who wrote a fledgling LINQ to SQLite provider, reports in his Mono GSOC Projects: Linq to SQLite post of May 1, 2008 that he "noticed that one of the accepted proposals for the Mono project is to create a LINQ provider for SQLite."

    This project appears to be related to the "Linq to SQL for open source databases" topic of Mono's Student Projects page and is listed in Current Projects on Google Code's Mono Project page.

    An Open Source Project for a SQLMetal.exe and SQL Server Compact Edition 3.5 UI

    LINQ to SQL's graphic designer doesn't support SQL Server Compact Edition (SSCE) 3.5, so you must use the SQLMetal.exe command-line tool to create LINQ to SQL classes for *.sdf database files.

    J. Torres has started a open source project on CodePlex to create a front end for SQLMetal.exe that's compatible with SSCE 3.5.

    However, it's a good bet that SSCE 3.5 support will be included in VS 2008 SP1, so the project might have a short shelf life.

    Derek Whittaker Explains How to Group LINQ to SQL Sequences on Multiple Columns

    Derek explains in his Multi-Column Grouping with Linq2Sql post of April 30, 2008 how to write the LINQ to SQL equivalent of the following T-SQL query.

    SELECT  COUNT(*) AS Count,   
            cs.SendID,   
            cs.Name AS SendName,   
            cts.ListID,   
            cts.ListName,   
            ctom.EmailAddress   
    FROM    CampaignTrackingOpenedMail AS ctom   
            INNER JOIN CampaignTrackingSummary AS cts    
                ON ctom.CampaignTrackingSummaryID = cts.[ID]   
            INNER JOIN CampaignSend AS cs    
                ON cts.SendID = cs.SendID   
    GROUP BY cs.SendID,   
            cs.Name,   
            cts.ListID,   
            cts.ListName,   
            ctom.EmailAddress  

    The translation isn't obvious.

    Alex James Starts a Fantasy Football Project with Entity Framework as the Data Source

    Back in late March, Alex published his Statement of Intent:

    I'm going to start creating 'real world' applications using the Entity Framework, and I'm going to blog about all the tradeoffs I make, the hoops I have to jump through, the gotcha's I encounter, the workarounds, the design considerations etc.

    In Real world App - Part 1 - Choosing an Application of April 30, 2008, Alex decides on Fantasy Soccer (a.k.a. Fantasy Football).

    In Fantasy Soccer - Part 2 - an overview of the rules of May 1, 2008, Alex says:

    At this stage only one thing is certain, it will use the Entity Framework for data access.

    Fantasy Soccer - part 3 - Unit of Measure of May 3, 2008 discusses using the Entity Data Model's ComplexProperty feature to handle issues with English versus metric measurements and using a helper class to enable sorting by a scaled value, such as weight in lbs. or kg. (Stones for en-uk?>

    Updated: May 3, 2008