Sunday, September 28, 2008

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

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

• Updated 9/28/2008 3:00 PM PDT adding VS 2008 SP1, jQuery, ASP.NET MVC 
• Updated 9/27/2008 2:00 PM PDT with EF, LINQ to SQL, LINQ to XML, SSDS
•• Updated 9/26/2008 8:00 AM PDT adding EF POCO update, Silverlight RC0, DD
• Updated 9/25/2008 12:00 noon PDT including newly announced PDC 2008 sessions

Entity Framework and Entity Data Model (EF/EDM)

••• Julie Lerman’s No, I do not want Set in the name of my EntitySet post of 9/26/2007 echoes my Forcing Gratuitious Pluralization of EF EntitySet Names Was a Very Bad Decision post of 9/20/2008. Both of us abhor the enforced Set suffix for singularized EntitySets.

Jarek Kowalski released v1.03 of his EF POCO Adapter which focuses on n-tier scenarios and detached entities, according to his EF POCO Adapter updated (v1.03) post of 9/25/2008. Following are Jarek’s descriptions of the changes:

  • Added wrapper for ObjectContext.ApplyPropertyChanges() to IEntitySet<T>
  • Added wrapper for ObjectContext.Detach() to IEntitySet<T>
  • Fixed handling of detached/out-of-scope entities w.r.t lazy loading and attaching to other contexts. Lazy loading outside of scope will do nothing if the context had DeferredLoadingEnabled=false, otherwise will throw.
  • Added partial OnZZZCreated() methods on generated contexts, adapters and proxies to enable integration with 3rd-party extensions
  • Fixed code generation from EDMX.
  • EFPocoContext.EnableLazyLoading has been renamed to EFPocoContext.DeferredLoadingEnabled to better align with Linq to SQL and our plans for EF v2
  • Fixed adapter-POCO synchronization for complex types

You can download the source code from the MSDN Code Gallery’s Persistence Ignorance (POCO) Adapter for Entity Framework section.

Jarek’s previous posts about the EF POCO Adapter:

• Frans Bouma is interviewed by .NET Rocks! podcasters Carl Franklin and Richard Campbell "about his thoughts on the ORM revolution, his products, and the Entity Framework” in show #380. Frans’ interview starts at 14:00.

Frans says Microsoft has “put LINQ to SQL on the back seat,” which corresponds with the points I raised in my Is the ADO.NET Team Abandoning LINQ to SQL? post of May 23, 2008 (updated 5/23/2008). Carl Franklin also brings up Microsoft’s original position was that “Entity Framework is not an O/RM” at about 37:00.

Julie Lerman’s lengthy “Data Access Options in Visual Studio 2008” article for CoDe Magazine became available online on 9/25/2008. It’s a must-read for developers who need to decide on one of the seven .NET 3.5 SP1 data access technologies her article describes.

Note: Non-subscribers can view Page 1 only until two months after publication.

Muhammad Mosa starts a new multi-part Entity Framework tutorial with Inheritance and Associations with Entity Framework Part 1 of 9/24/2008, which (paraphrasing Moses) covers building simple associations between two entities and writing custom code to retrieve other parts of the relation when inheritance is applied.

His detailed, downloadable sample project contains the following, fully illustrated (by screen captures) topics:

  • How to define a model with Table-per-Hierarchy Inheritance
  • Creating Sub Entities
  • Define Mappings
  • Define An Abstract Class

LINQ to SQL

••• Fredrik Kalseth’s DataContext Repository Pattern Example Code post of 9/27/2008 contains a link to download sample code for his Linq to Sql, Programming Against an Interface and the Repository Pattern of 5/5/2008 about which Fredrik says:

The magic that lets us run queries against for example IPage, is in the Cast<T> extension method in System.Linq. By using it, it allows clients to ask the Repository<T> method for IPage, which then through the mapping configured in the static TableMaps dictionary (where at application startup I've added the mapping between IPage and Page) gets translated into a request for the Page table from the context, and then finally cast back to a IQueryable<IPage> before being returned to the caller, ready for querying against.

His earlier, related The Specification Pattern and Encapsulation post of 7/12/2008 links to Nicholas Blumhardt’s Implementing the Specification Pattern via Linq post of 7/6/2008.

Matt Manela publishes a reader’s simpler method for SSCE 3.5 connection sharing in his SQL CE 3.5 with LINQ to SQL Revisited post of 9/26/2008. The original post was SQL CE 3.5 with LINQ to SQL of 9/8/2008. (Repeated in SQL Server Compact 3.5)

Simon Segal supplements the post below with LINQ To SQL - Going POCO and more……! Part 2 of 9/25/2008, which discusses accessor mutators for EntitySet and EntityRef types.

Simon Segal generates a multifile assembly of his LINQ to SQL libraries for his POCO Custom Multifile Assembly and ReSharper post of 9/24/2008. His earlier LINQ To SQL - Going POCO and more…..! post describes his

Generic Repository approach [that] utilises POCO’s along with Specifications and Fetching strategies (an nHibernate concept). …

The idea of the generic repository began as an extension of the ideas expressed by Mike Hadlow in his article here which are derived from Ayende’s work here.

Simon discusses the design of his POCO generic Repository in his lenghty POCO improves inheritance for LINQ to SQL post of 8/26/2008.

• Damien Guard has fixed a few bugs in his Text Template Transformation Toolkit (v.74) on 9/25/2008 and there’s a new, corresponding version of my DamienGuardT4.sln project available from SkyDrive. For more details, see Bidirectional Serialization of LINQ to SQL Object Graphs with Damien Guard’s T4 Template in VS 2008 SP1, which was updated on 9/25/2008 also.

Nick Berardi demonstrates How NOT To Optimize LINQ Statements in his post about LINQ to SQL queries of 9/24/2008. Nick looked at the T-SQL generated by his complex LINQ to SQL query, which included a couple of let statements, and concluded 34 lines with three CASE statements was too many. His optimization reduced the number of lines to 16, but increased the execution time by a factor of 4.6.

Nick says:

The moral of the story is you probably don’t need to optimize your SQL query through LINQ, just keep it simple and optimize your LINQ statement and leave the rest up to the professionals at Microsoft who created the LINQ to SQL expression query generator.

LINQ to Objects, LINQ to XML, et al.

• Charlie Calvert has returned to his LINQ Farm series. LINQ Farm: LINQ to XML and Line Numbers of 9/26/2008 shows how to indicate line numbers in XML Documents with help from an XmlLineNumbers project from XmlLineNumbers.zip in CodeGallery’s LINQ Farm section.

Rinat Abdullin compares the performance of simple LINQ to Objects queries and hard-coded equivalents in his Some performance issues and caveats of LINQ of 9/25/2008.

ADO.NET Data Services (Astoria)

•••• Scott Hanselman offers a demonstration of jQuery 1.2.6 in conjunction with

  • ADO.NET Data Services and it's JavaScript Client Library
  • ASP.NET AJAX
  • ASP.NET AJAX Client Templating (Preview)

in his jQuery to ship with ASP.NET MVC and Visual Studio post of 9/28/2008. For more on Microsoft’s adoption of jQuery in VS 2008, see the Miscellaneous topic.

• Shawn Wildermuth reports about encountering performance problems in his online Silverlight 2 samples in his ADO.NET Data Services Performance Issues post of 9/25/2008.

The problem occurs with an Astoria query that retrieves many:one EntityRefs (Category and Supplier for each Product requested). Part of the problem might be that Shawn included the Category.Picture bitmap field in the query. LINQ to SQL, which is smart enough not to repeat T-SQL requests for objects currently in memory, doesn’t provide updatable Astoria objects out of the box. Entity Framework doesn’t support LINQ to SQL’s DRY (don’t repeat yourself) feature.

Steve Maine will present Microsoft .NET Framework: Developing RESTful Services at PDC 2008:

Learn the latest features in Windows Communication Foundation for building Web 2.0-style services that use URIs, HTTP GET, and other data formats beyond XML. See how these features can be applied to AJAX web sites, "REST" applications, and data feeds.

ASP.NET Dynamic Data (DD)

•• DLPanther announces plans for a series of articles about ASP.NET Dynamic Data in his ASP.NET Dynamic Data, The Next Data Revolution! post of 9/25/2008.

Steve Naughton continues his exploration of new DD techniques with Dynamic Data Custom Pages with Ajax Control Toolkit Tabs of 9/25/2008, which describes the two most successful methods he found for creating a generic page with a DetailsView that shows the parent record and a set of tabs showing all its child records.

Stephen Walther will deliver ASP.NET Futures: WebForms and MVC Advancements at PDC 2008:

Learn about future advances in ASP.NET like WebForms, MVC, AJAX, Dynamic Data, and dynamic languages.

Scott Hunter will present ASP.NET: Dynamic Data 2.0 and Dynamic Data for MVC at PDC 2008:

The next version of ASP.NET MVC contains a new scaffolding feature based on Dynamic Data that provides a rich framework for creating data driven web sites. Learn how to quickly build a Dynamic Data web site using features like model level validation, field and entity templates, and scaffolding.

Mike Taulty reports about experiments with DD in his ASP.NET 3.5 Sp1 Dynamic Data post of 9/24/2008. He was surpised to find that VS 2008 SP1’s DD templates were limited to Dynamic Data Web Site (Entity Data Model data source) and Dynamic Data Entities Web Site (LINQ to SQL data source).

Steve Naughton updated An Advanced FieldTemplate with a GridView/DetailsView Project, the seventh episode of his Dynamic Data and Field Templates series, on 9/23/2008. Paraphrasing the updates:

The FieldTemplate now has ParentDetails and the ChildrenGrid FieldTemplate’s
ParentDetails no longer support Insert but they do support Update as before.

SQL Server Data Services (SSDS)

Kim Cameron and Stuart Kwan will present Claims-Based Identity: A Security Model for Connected Applications at PDC 2008:

Claims-based security is the underpinning of many applications, services, and servers. This model enables security features like: multiple authentication types, stronger authentication on-the-fly, and delegation of user identity between applications. Learn how to use this model in .NET, how it integrates with Active Directory, how it works across platforms, how it works with existing applications, and how we use it at Microsoft.

SSDS v1 will use claims-based security from BizTalk Services.

Lynn Ayres and Tore Sundelin will deliver Connecting Active Directory to Microsoft Cloud Services at PDC 2008:

Learn how to augment your existing IT infrastructure with Microsoft Services. Manage and secure end user access to cloud services using your existing investment in Active Directory. Enable end users to access cloud services through existing Active Directory accounts, the same way they access your intranet-hosted software today. Hear how to enable existing software to use new service capabilities without re-writes, and do it all through the use of open and standard protocols.

Gianpaolo Carrero’s Cloud Services Architecture symposium post of 9/24/2008 describes the Head in the Cloud, Feet on the Ground symposium on PDC 2008’s day four. Gianpaolo says:

We will explore a few examples of cloud-based infrastructure usage as part of an existing application, we will discuss the architectural tradeoffs as well as best practices resulting from that usage. We will also walk through detailed examples of ‘enterprise grade’ hosted application design. And finally we will go through emerging patterns that take into account the physical aspects of a cloud-based application that are often overlooked, such as bandwidth which happens to be not infinite and certainly not free at high scale.

David Robinson announced in his SSDS and SSIS…like peanut butter and jelly post of 9/23/2008 that Matt Masson has posted documentation and downloadable code for SQL Server Data Services Connectors for Integration Services on CodePlex. Here are the download links:

The Source and Destination adapters simplify downloading and uploading SSDS data by taking advantage of SQL Server Integration Services.

Roger Jennings explores two relational databases in the cloud in his SSDS’s Competitors: Oracle 11g and Sun MySQL on Amazon EC2 of 9/23/2008. Oracle 11g for the Cloud was announced by Amazon Web Services on 9/22/2008; cloud-based MySQL was announced (originally) on 5/8/2008 and didn’t appear to garner much interest.

The unadvertised special is a a shared AMI for Oracle Express 10g with Oracle Enterprise Linux available from Amazon.

More from ZDNet about the cloud in Sam Diaz’s Intel at Oracle OpenWorld: It’s about time - and the cloud post of 9/24/2008 from Oracle OpenWorld.

Ayende Rahien’s Amazon EC2 now offers RDBMS post of 9/23/2008 gives his take on the difference between Oracle and MySQL in the cloud. Ayende concludes “I found this to be extremely interesting.”

Andrew Whitten says the following about his 9/21/2008 post about the Pictures in the Cloud - SSDS demo app, available from CodePlex:

I’ve been having a bit of hack around to show how pictures can be stored by this kind of service. There isn’t any reason to use this over the other online photo sharing sites, but it demonstrates how to use the API.

SQL Server Compact (SSCE) 3.5 and Sync Services

Matt Manela publishes a reader’s simpler method for SSCE 3.5 connection sharing in his SQL CE 3.5 with LINQ to SQL Revisited post of 9/26/2008. The original post was SQL CE 3.5 with LINQ to SQL of 9/8/2008. (Repeated in LINQ to SQL)

Visual Studio 2008 Service Pack 1 (General)

•••• MSDN Events Summer 2008 Resources offers the following downloads for Session 3 | Developing Applications with Visual Studio 2008 and .NET Framework 3.5 Service Pack 1:

Miscellaneous (WPF, WCF, MVC, Silverlight, etc.)

•••• Scott Guthrie announces support for the jQuery JavaScript library in the ASP.NET MVC preview and future versions of VS 2008 in his jQuery and Microsoft post of 9/28/2008. Scott says:

We will distribute the jQuery JavaScript library as-is, and will not be forking or changing the source from the main jQuery branch.  The files will continue to use and ship under the existing jQuery MIT license.

We will also distribute intellisense-annotated versions that provide great Visual Studio intellisense and help-integration at design-time. …

The jQuery intellisense annotation support will be available as a free web-download in a few weeks (and will work great with VS 2008 SP1 and the free Visual Web Developer 2008 Express SP1).  The new ASP.NET MVC download will also distribute it, and add the jQuery library by default to all new projects.

We will also extend Microsoft product support to jQuery beginning later this year, which will enable developers and enterprises to call and open jQuery support cases 24x7 with Microsoft PSS.

jQuery’s John Resig has more to say about Visual Studio’s adoption of jQuery in his jQuery, Microsoft, and Nokia post of the same date.

As Ayende Rahien points out in his On jQuery & Microsoft post of 9/28/2008: “[S]omething else that I didn't see other people pointing out":

This is the first time in a long time that I have seen Microsoft incorporating an Open Source project into their product line.

I am both thrilled and shocked.

Justin Etheredge’s $("Microsoft").append("excitement"); post of 9/28/2008 goes into much more detail about the impact of inclusion of third-party, open-source jQuery in VS 2008.

Rick Strahl announces the first of a two-part series of jQuery articles in his Introduction to jQuery Article posted post of 9/28/2008. Rick says the in the latter post:

Part 1 of the article is mostly a pure jQuery introduction and doesn’t talk about jQuery’s Ajax features or direct interaction with the server side and ASP.NET. Rather it focuses purely on many of the extremely useful client side features as well as the basic concepts of extending jQuery with plugins.

Part 2 then will talk about the server side integration with ASP.NET using various mechanisms to call ASP.NET content from raw page Ajax calls, to JSON Service callbacks, to using templating and even partial rendering against server side ASP.NET application. I’ll also talk about building ASP.NET components that integrate with jQuery. This article is based on my jQuery session that I’ve been giving at various conferences and user groups.

•••• Justin Etheredge provides a flow diagram for MVC requests in his ASP.NET MVC Request Flow post of 9/27/2008. Justin says he was unable to find a similar diagram on the web.

Scott Guthrie announced the release of Silverlight 2 RC0 for developers in his Silverlight 2 Release Candidate Now Available post of 9/25/2008. Scott says:

You can download today's Silverlight Release Candidate and accompanying VS and Blend support for it here.  Note that Expression Blend support for Silverlight 2 is now provided using Blend 2.0 SP1.  You will need to install Blend 2.0 before applying the SP1 service pack that adds Silverlight 2 support.  If you don't already have Blend 2.0 installed you can download a free trial of it here. …

Over the next few months we will be releasing a lot of new Silverlight 2 controls (more details on these soon). Today's release candidate includes three new core controls - ComboBox, ProgressBar, and PasswordBox - that we are adding directly to the core Silverlight runtime download (which is still only 4.6MB in size, and only takes a few seconds to install):

He also says the final release will be “shipped … soon.” Get more details on the release from:

Beth Massi offers a link to the source code and slides for her Data Sources and Data Binding in WPF Talk in Redmond on 9/22/2008. Beth says:

I started the talk with basics of data binding to a variety of data sources and then we moved to more to data access discussions and n-tier architecture issues. It was similar to the talk I did at Bay.NET in SF last month but I focused this time completely on WPF and didn't show any Winforms at all. This allowed us to have more time for architecture discussions and I think it worked out well.

Ayende Rahien is in the process of learning Erlang, the open-source programming language behind Amazon SimpleDB and open-source CouchDB, a document-oriented database that’s an Apache Incubator project.

Here are his posts by topic as of 10/24/2008 11:00 AM PDT (in chronological order):

All in all, an amazing tour de force of analyzing complex source code in a language that’s new to him.

Thursday, September 25, 2008

Bidirectional Serialization of LINQ to SQL Object Graphs with Damien Guard’s T4 Template in VS 2008 SP1

Summary

The Windows Communication Foundation (WCF) team made a minor modification to the System.Runtime.Serialization.DataContractSerializer class at the behest of the Entity Framework (EF) team to enable “bidirectional” (full object graph) serialization and deserialization of EF object graphs. You specify bidirectional serializtion by adding an IsReference = true argument to the [DataContract()] attribute of EntityRef associations in .NET 3.5 SP1.

A very simple change to LINQ to SQL’s class-generation template could have given LINQ to SQL similar capabilities to serialize complete object graphs that contain cyclic references. The Data Programmability group (DPG) modified LINQ to SQL to support some new SQL Server 2008 datatypes but chose not to enable serialization of complete object graphs.

LINQ to SQL developer Damien Guard, who joined the DPG in May 2008, announced the availability of a customizable T4 template to generate LINQ to SQL classes from the *.dbml file in his LINQ to SQL T4 template reloaded post of July 23, 2008.

A couple of minor modifications to the L2ST4.tt template file and addition of a reference to and using directive for the System.Runtime.Serialization namespace enables full-object-graph serialization of LINQ to SQL entities. This brings parity to both VS 2008 OR/M tools in the serialization department.

Updated 9/25/2008: Damien Guard released the latest (v.74) update to his LINQ to SQL template for Visual Studio 2008 on 9/25/2008. This Text Template Transformation Toolkit (T4) version offers the following new features (quoting Damien):

  • Inheritance - generates subclasses with all properties and code mappings.
  • VB.NET - CSharpDataContext.tt is joined by a VB.NET emitting VBNetDataContext.tt.
  • DataContract SP1 – additional mode to emit SP1-compatible DataContract serialization via Roger Jennings.
  • Composite keys – both as the primary key and as a foreign key in an association.
  • Type attributes – the data context and entity types can now be sealed or abstract as well as public, private, protected, internal or protected internal.
  • Associations – prevents foreign key values changing once the object association is made and updates parent side of one-to-many associations.
  • Stored procedures – generates the method wrappers complete with parameters etc.

You can download the updated (v.74) DamienGuardT4.sln project here (290 KB zip file from Microsoft Skydrive).

Background

In my Serializing Object Graphs Without and With References post of 11/21/2007, I described the differences between .NET 3.5’s DataContractSerializer (DCS), which was then unable to serialize complete object graphs, and the NetDataContractSerializer (NDCS), which could handle cyclic references but included CLR type information in the serialized XML. Substituting CLR types for XML Schema’s datatypes made the serialized XML “non-standard.”

The post included a link to a Customers-Orders-Order_Details tree serialized with DCS (NwindCustsDCS.xml, 1.1 MB) and a similar tree serialized with NDCS (NwindGraphNDCS.xml, 410 KB), which also included associated Employee, Shipper, Product, Category and Supplier EntitySets. The

The z:Type="System.Collections.Generic.List`1[[NwindObjects.MainForm+Customer, NwindObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"

attribute requires that the client have a matching local type for deserialization to succeed.

Note: The 11/21/2007 post was a followup to my LINQ to SQL and Entity Framework XML Serialization Issues with WCF - Part 1 of 10/9/2007, which dealt primarily with a bug in LINQ to SQL serialization in Orcas Beta 2.

Setting LINQ to SQL’s Serialization Mode property of the *.dbml file to Unidirectional causes the class code generation template to apply [DataContract()] attributes to entity classes and [DataMember()] attributes to entity properties, which enables them to participate in WCF 3.5 XML Web service scenarios. Unidirectional serialization also applies [DataMember()] attributes to EntitySets of associated entities in 1:many relationships but not to the EntityRefs of many:1 relationships.

My Is the ADO.NET Team Abandoning LINQ to SQL? post of May 23, 2008 compared the new features added by SP1 to EF and LINQ to SQL. LINQ to SQL got the short end of the stick.

Taking Advantage of Damien’s T4 Template

Updated 9/25/2008: To implement bidirectional serialization with LINQ to SQL and Damien’s Text Template Transformation Toolkit (T4) template v.74+ do the following:

  1. Add the L2ST4.ttinclude and either CSharpDataContext.tt or VBNetDataContext.tt to your project depending on your language type.
  2. Rename xDataContext.tt to match your DBML file but with .tt extension instead of .dbml and include it (and, optionally, the DbmlName.tt file) in your project.
  3. Set the existing DbmlName.designer.cs/vb Build Action property to None to ignore LINQ to SQL’s built-in code generation with the MSLinqToSQLGenerator custom tool.
  4. Right-click the DbmlName.tt file icon in Solution Explorer and choose Run Custom Tool to generate the DbmlName.generated.cs/.vb class file.
  5. If you’re using design-time databound controls, add the project’s namespace to the DbmlName.generated.cs/.vb file.
  6. Press F5 to build and run the project with code generated by the T4 template.

Add the following code behind Form1:

private void Form1_Load(object sender, EventArgs e)
{
    using (NorthwindDataContext ctxNwind = new NorthwindDataContext())
    {
        DataLoadOptions lo = new DataLoadOptions();
        lo.LoadWith<Order>(o => o.Order_Details);
        lo.LoadWith<Order>(c => c.Customer);
        ctxNwind.LoadOptions = lo;
        List<Order> OrderList = ctxNwind.Orders.ToList();

        var dcs = new DataContractSerializer(typeof(List<Order>));

        FileStream fsc = new FileStream("NwindOrdersGraphDCS.xml", 
            FileMode.Create);
        dcs.WriteObject(fsc, OrderList);
        fsc.Close();

        FileStream fso = new FileStream("NwindOrdersGraphDCS.xml", 
            FileMode.Open, FileAccess.Read);
        OrderList = (List<Order>)(dcs.ReadObject(fso));
        fso.Close();
    }
}

Press F5 to build and run the project and generate the NwindOrderGraphDCS.xml file (1.0 MB) in the …\bin\Debug folder. Here’s the project’s Spartan UI:

You can download the updated DamienGuardT4.sln project here (290 KB). The project installs into a \DamienGuardT4 folder and expects the Northwind sample database to be attached to a local instance of SQL Server 2005 or 2008 Express.

Tuesday, September 23, 2008

SSDS’s Competitors : Oracle 11g and Sun MySQL on Amazon EC2

Two more databases officially rose to the cloud with simultaneous Oracle, Sun, and Amazon Web Services (AWS) announcements of 9/22/2008 that current Oracle and Sun relational databases are licensed to run on AWS EC2. Neither service is a beta; both relational databases are fully supported in the cloud.

Oracle Database 11g

Oracle Database 11g (Standard and Enterprise editions), Oracle Fusion Middleware, and Oracle Enterprise Manager can now be licensed to run under Oracle Enterprise Linux in the cloud on Amazon EC2. Customers can use their existing software licenses with no additional license fees, and Oracle will provide support for products deployed to EC2.

To simplify provisioning, Oracle offers free Amazon Machine Images (AMIs) to enable building applications with Oracle Application Express, Oracle JDeveloper, Oracle Enterprise Pack for Eclipse and Oracle Workshop for WebLogic.

Note: There is a shared AMI for Oracle Express 10g with Oracle Enterprise Linux available from Amazon (see below) but no mention of license requirements, if any.

Oracle also is introducing the Oracle Secure Backup Cloud Module for offsite storage of 11g backups with Recovery Manger (RMAN).

AWS Announcement: Oracle and AWS

Links to more information from the Oracle Web site:

Demos and tutorials:

Downloadable AMIs (from AWS):

Sun MySQL Enterprise

Sun Microsystems supports MySQL Enterprise Gold, Platinum, and Unlimited (only) subscriptions on AWS EC2. (MySQL Enterprise Monitor is not available for Amazon EC2.)

Note: The Sun Introduces MySQL Tech Support for Amazon EC2 press release of May 5, 2008 announced support for MySQL and Open Solaris on EC2, so the AWS announcement appears to be a follow-up.

AWS Announcement: MySQL Enterprise Support for Amazon EC2

MySQL Enterprise subscription pricing:

  • Enterprise Gold: $2,999 per server/year
  • Platinum: $4,999 per server/year
  • Unlimited: ~$40,000 per year

AWS published a Running MySQL on Amazon EC2 with Elastic Block Store tutorial on 8/20/2008.

Further information: MySQL Forums: MySQL on Amazon EC2. There is surprisingly little activity in this forum: A total of 16 messages since 5/2/2008. Sun doesn’t appear to be actively promoting “MySQL in the Cloud.”

There’s no indication that Sun provides a shared AMI for MySQL.

Cloud Computing Quote of the Week

Redmond Developer News published a “Cloud Computing Leaving Relational Databases Behind” story by Joab Jackson on the day of the three companies’ announcement. Here’s the lede:

One thing you won't find underlying a cloud computing initiative is a relational database. And this is no accident: Relational databases are ill-suited for use within cloud computing environments, argued Geir Magnusson, vice president of engineering at 10Gen, an on-demand platform servicer provider. [Emphasis added.]

Update 10/24/2008: For more information about 10Gen’s cloud database and financing see:

Of course hype-fed technologies need their own magazine and conference; here they are for cloud computing:

As of today, there were no conference speakers from Oracle, MySQL (or Microsoft) on the agenda.

Sunday, September 21, 2008

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

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

Updated 9/20/2008 and 9/21/2008 Additions EF, Astoria, LINQ to Objects, SSDS, etc. 
Updated 9/19/2008 8:30 AM PDT Additions LINQ to SQL, SSDS
Updated 9/18/2008 8:30 AM PDT Additions SSDS
• Updated 9/17/2008 9:30 AM PDT Additions

Entity Framework and Entity Data Model (EF/EDM)

•••• Roger Jennings demonstrates Huagati System’s Huagati DBML/EDMX Tools for solving EF v1’s EntitySet pluralization issue (below) in his Singularizing EntityType and Pluralizing EntitySet Names with the Huagati DBML/EDMX Tools post of 9/21/2008.

•••• Roger Jennings complains about arbitrary and capricious renaming conventions for EF EntitySets in his Forcing Gratuitious Pluralization of EF EntitySet Names Was a Very Bad Decision post of 9/20/2008.

• Julie Lerman correctly defines niladic as “having no arguments” in her EDM Stored Procedures - what the heck is niladic? post of 9/17/2008. Niladic, monadic, and dyadic functions have 0, 1, and 2 arguments, respectively. SQL Server uses the term niladic to refer to system functions, such as @@identity or @@error, which is probably where the Data Programmability group came across it. I recall use of the term in conjunction with APL programming in the late 1970s.

• Matthieu Mezil reports in his TPT with designer can generate errors 3034 or 3021 post of 9/17/2008 that the EDM Designer has problems with a pair of scenarios for the Table per Type inheritance model.

Beth Massi uses Entity Framework as the data source for her Editing Tabular Data in WPF - Building a WPF Grid post of 9/15/2008. Beth explains how the WPF ListView and BindingListCollectionView combine to create an editable WinFoms DataGridView clone.

It’s unfortunate that there’s no drag-and-drop wizardry to generate a codeless WPF project. You must write all the XAML yourself (or copy it from Beth’s post.) Alternatively, you can download the code for this and a previous post, Editing Tabular Data in WPF Using the Winforms DataGridView, from the Editing Tabular Data in WPF item on MSDN Code Gallery.

LINQ to SQL

Jim Wooley’s Enabling intellisense for LINQ to SQL XML Mapping files post of 9/18/2008 explains how to obtain and install the LinqToSqlMapping.xsd schema file to support the xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007" namespace if it’s missing from your installation of VS 2008 SP1’s \Program Files\Microsoft Visual Studio 9.0\Xml\Schema folder.

This problem was reported in a Microsoft Connect bug report, which was acknowledged by Microsoft as a known bug. However, it wasn’t missing from my installation.

Damien Guard released the latest update to his LINQ to SQL template for Visual Studio 2008 on 9/14/2008. Damien says:

If you want to customize the LINQ to SQL code generation phase in your project without additional tool dependencies this could be what you’re looking for. The template has been improved since publication with fixes for column mapping defaults, enum parsing and now generates stored procedure wrapper methods.

This Text Template Transformation Toolkit (T4) version offers the following new features:

    • Inheritance - generates subclasses with all properties and code mappings.
    • VB.NET - CSharpDataContext.tt is joined by a VB.NET emitting VBNetDataContext.tt.
    • DataContract SP1 – additional mode to emit SP1-compatible DataContract serialization via Roger Jennings.
    • Composite keys – both as the primary key and as a foreign key in an association.
    • Type attributes – the data context and entity types can now be sealed or abstract as well as public, private, protected, internal or protected internal.
    • Associations – prevents foreign key values changing once the object association is made and updates parent side of one-to-many associations.
    • Stored procedures – generates the method wrappers complete with parameters etc.

  Damien added in a message and blog update of 9/18/2008 that the version current as of 9/19/2008 has “full stored procedure support which actually works with concurrency checking (unlike SqlMetal’s which silently fails.)

LinqMaster’s How to Speed Up LINQ to Sql With Compiled Queries post of 9/15/2008 reminds us that compiling LIQ to SQL queries speeds their execution, as Rico Mariani discussed in his famous quintet of posts on the same topic.

LINQ to Objects, LINQ to XML, et al.

•••• Damon Wilder Carr delivers LINQ to GAC in his Linq to Gac : Use Linq to Power Query your Gac via this C# Bridge to Fusion team domain.dot.net post of 9/20/2008 to “get LINQ access to the GAC with no fuss.”

•••• John Papa describes a LINQ to Objects query that mashes items from several different feeds together (from an ObservableCollection<SyndicationFeed> type), and sorts them by date in his LINQ to RSS/ATOM (Kind of) post of 9/20/2008. John says:

Its pretty basic LINQ, but when combined with the way cool SyndicationFeed and SyndicationItem classes, I think its pretty darn awesome.

I agree; it nicely demonstrates the ubiquitous nature of LINQ queries.

•• Ken Getz’s recent “Advanced Basic” columns for MSDN Magazine provided yet more coverage of LINQ Enumerables:

  1. The LINQ Enumerable Class, Part 1 (July 2008) was “a quick tour through half of the methods in the Enumerable class.”
  2. The LINQ Enumerable Class, Part 2 (September 2008) “digs into the System.Linq.Enumerable class and shows readers how to perform some magic data operations using System.Linq.Enumerable.”

Is there any indication of when readers will say enough to LINQ to Objects rehashes? However, Ken’s are better than most.

• Eric White observes in his Congratulations to a Couple of Cool People post of 9/16/2007 that “the strongly typed XML programming API of version 2 of the Open XML SDK was very much inspired and influenced by LINQ to XSD,” but “[s]o far, LINQ to XSD hasn't become a supported product.”

It’s time for the Data Programmability group to move LINQ to XSD out of hibernation as an alpha product and support it!

Paul Stovell reports on his progress in simplifying Bindable LINQ by removing multi-treaded operation and substituting synchronous dispatchers in Bindable LINQ: Threading of 9/16/2008.

Bart De Smet’s strangely named Who ever said LINQ predicates need to be Boolean-valued? post of 9/14/2008 is a paean to LINQ’s flexibility that covers these topics:

  • The LINQ provider spectrum: Completely local to completely remotable
  • LINQ as a language pattern: “Just like foreach, lock, using, etc are patterns on top of other stuff (IEnumerable, Monitor, IDisposable, etc).”
  • A different view on predicates: Where as a filtering operator
  • Taking it across the border: IQueryable (or something like it)
  • Staged migration of query languages: LDAP’s ~= operator, CAML’s DateRangesOverlap() method
  • Conclusion: Six ways to write LINQ-aware APIs

ADO.NET Data Services (Astoria)

•••• Keith Pijanowski’s My talks on REST and S+S at VSLive New York 2008 post includes links to his “RESTful Services with Windows Communication Foundation” presentations a VSLive! New York. It also has links to download Nikhil’s Web Development Helper, which “provides a set of tools and utilities for the Web developer, esp[ecially] Ajax and ASP.NET developers,” and links to Rob Bagley’s 10-part REST in WCF blog series.

•••• Mike Taulty posts sample code from his REMIX UK sessions on Silverlight and WPF in his REMIX UK - "No Silverlight Application is an Island" Code post of 9/20/2008:

  1. Interacting with the HTML DOM and Javascript. Project download.
  2. Interacting with the local machine via the file dialog and Isolated Storage. Project download.
  3. Interacting with a SOAP based web service. Project download.
  4. Interacting with a RESTful web service. Project download ( note, there's some small bits of SQL to run to make this one work - in a sub-folder called SQL ). Note also you'll need the updated Silverlight client bits for ADO.NET Data Services.
  5. Interacting with RSS/ATOM. Project download ( note, I skipped by this one yesterday as I was running out of time ).
  6. Interacting with Sockets. Project download.

•• Richard Blewett’s three-part “Why REST Web Services?” article on the rejuvenated Developer Fusion site analyzes the trade-offs between SOAP and REST SaaS applications:

  1. What's wrong with SOAP
  2. What is REST?
  3. Is REST perfect?

• Daniel Pratt reports that the RTM version of Astoria with Entity Framework as the data source doesn’t support navigation properties on derived types in his Navigation properties on derived types message of 8/24/2008 in the ADO.NET Data Services (Pre-Release) forum. Microsoft’s Pratik Patel says:

[T]his didn't make it for the V1 timeframe. We really wanted to support this so that users can use inheritance in the entity model. This is one of the most important features we are targetting for V2. V1 just went out, so it will be some time before we do a beta/ctp for the next release.

Thanks to Matthieu Mezil for the 9/17/2008 heads up on that message.

ASP.NET Dynamic Data (DD)

•••• Matt Berseth now has links to live demos of his five DD demonstration projects on his Dynamic Data Demos Now Available post of 9/21/2008/. Most of the demos have substantial customization applied.

Rick Anderson of the ASP.NET User Education (UE) group has posted a detailed analysis of the Differences When Working with the ADO.NET Entity Framework to LINQ to SQL with ASP.NET Dynamic Data (ANDD). This post is a must-read for developers considering using EF instead of LINQ to SQL as the data source for ANDD. (LINQ to SQL was the only data source for early ANDD versions.)

Some highlights:

  • Many-to-many relationships don’t support navigation; a relation table is required.
  • Complex types aren’t supported.
  • ANDD doesn’t detect auto-generated (int identity or rowguid) primary keys; a partial class for the Insert page with a Scaffold value of false for the primary key field is required
  • ListView controls require special treatment of foreign key fields

This post hasn’t received the attention it deserves.

Matt Berseth substitutes the Yahoo! User Interface (YUI) JavaScript library’s DataTable and DataSource controls for DD’s DataGrid and EntityDataSource or SqlDataSource controls in his Dynamic Data - Experimenting with YUI's DataTable and DataSource Controls post of 9/15/2008.

Steve Naughton supplements his early July FileImage_Edit FieldTemplat posts with Dynamic Data: Part 3-FileUpload FieldTemplates of 9/15/200, which let you:

  • Upload a file to a specified folder.
  • Download the said file once uploaded.
  • Display an image for the file.
  • Control the download capability via attributes and user Roles.
  • Handle errors such as wrong file type or when file is missing from upload folder.

SQL Server Data Services (SSDS)

•••• Keith Pijanowski, Microsoft strategy platform advisor, outlined the high-level architecture strategy in a session entitled "Navigating the Software Plus Services Landscape" to Kathleen Richards, senior editor of Redmond Developer News and Application Development Trends as reported in her VSLive! NY: A Glimpse of .NET Framework in the Cloud story of 9/10/2008.

His My talks on REST and S+S at VSLive New York 2008 post of 9/9/2008 include links to his “Navigating the Software plus Services Landscape” and “RESTful Services with Windows Communication Foundation.” (See the related Astoria item.)

Soumitra Sengupta’s SSDS at PDC 2008 post of 8/18/2008 describes the four SSDS presentations at PDC 2008:

  1. Microsoft SQL Server: Data-Driven Applications from Device to Cloud - Dave Campbell
  2. A Lap around SQL Server Data Services - Soumitra Sengupta
  3. Under the Hood: Building SQL Server Data Services - Istvan Cseri and Gopal Kakivaya
  4. SQL Server Data Services: Futures - Patric McElroy

Soumitra also recommends these related sessions:

  1. Microsoft Sync Framework: Enterprise Data in the Cloud and on Devices - Liam Cavanagh
  2. Microsoft Sync Framework Advances - Lev Novik
  3. Developing Applications Using Data Services - Mike Flasko
  4. Entity Framework Futures - Tim Mallalieu
  5. Project "Velocity": A First Look - Murali Krishnaprasad
  6. A Lap around Building Block Services - John Shewchuk
  7. Architecture of the Building Block Services - Dennis Pilarinos, John Shewchuk

 Werner Vogels, Amazon.com’s CTO, announced in his Expanding the Cloud post of 9/18/2008 that Amazon Web Services’ S3 service will be complemented by a new content delivery network (CDN) later this year. Amazon’s CDN will feature a “global network of edge locations this new service [that] can deliver popular data stored in Amazon S3 to customers around the globe through local access.”

While not competing directly with SSDS or other current Windows Live services, AWS’ expanded service repertoire indicates that Amazon plans to maintain its current #1 position in cloud computing. For more background and details, read Jeff Bar's post on the AWS weblog and Om Malik’s Amazon Launches Content Delivery Network. Rivals, Watch Out! article of 9/18/2008.

 Alex Iskold, founder/CEO of AdaptiveBlue, says (quoting an anonymous Amazon evangelist):

AWS now handles 50k requests per second from 400,000 developers. Bandwidth from AWS is now almost double the bandwidth of Amazon.com’s retail operations.

Niraj Nagrani has scheduled his TechNet Webcast: SQL Server Data Services Launch (Level 200) for 11/14/2008. See SQL Server Data Services to Launch On or Before 11/14/2008? of 9/18/2008 for a screen capture in case the SSDS folks change their mind on the “release,” which I think is the public beta.

Jeffrey Schwartz’s Reaching For The Clouds With SSDS Microsoft gives cloud-based repository lots of air play (excuse the pun) post of 9/15/2008 to the Redmond Developer New blog reviews Microsoft account architect Jim Williams’ SQL Server Data Services: An Introduction and Overview of Microsoft's Cloud Storage Service session about SSDS at VSLive! New York last week. Jeffrey’s article has a link to my SQL Server Data Services: Data storage in the cloud Tech Brief.

I’ve heard of building architects, software architects, and application architects but “account architect” is a new one for me. I wonder what pay grade Microsoft assigns to “account architects” and whether they have an industry association? Association of Account Architects? American Institute of Account Architects?

• Amitabh Srivastava, Microsoft VP of Cloud, Infrastructure, & Services, is interviewed on Channel9 for 9:02 about the cloud services sessions at PDC 2008. Here’s the deck:

In a very special edition, the VP of CIS, joins Mike and Jennifer to talk about what his team will be revealing at PDC (well, he can’t really say that much yet – you’ll just have to go to the PDC to find out his news).  An  11 year Microsoft veteran, Amitabh joined Microsoft in 1997 working in our Research group.  Now he works for Ray Ozzie, and the PDC is the coming out party for his team and what they’ve been working on in the Services space.

Much of the nine minutes was devoted to a discussion of utility computing (a la SSDS.)

• John Papa foresees cloud services as a major application for the next version of Silverlight in his Cloud Services are Important to Silverlight’s Future. John says:

I’m looking beyond this release a what might be in the next release. I think we’ll see a lot of graphical improvements, but where I see a great opportunity for growth is in the area of building more expansive cloud services support with Silverlight. Security, improved REST service interoperability, PUT, DELETE, increasing the HTTP stack, and other features that make working with cloud services would greatly enhance development in Silverlight and give it a big edge over competition. Who knows what [else] we’ll see, but from everything I hear from readers, there is a lot of interest in this area.

Roger Jennings wrote the SQL Server Data Services: Data storage in the cloud Tech Brief for the 9/15/2008 edition of Redmond Developer News. Click here to view the simple SSDS diagram.

For a deeper look into SSDS’s workings and updated test harness sample code, check out the fully illustrated Updated SQL Server Data Services (SSDS) Test Harness: Northwind REST and SOAP Uploads of 7/27/2008.

SQL Server Compact (SSCE) 3.5 and Sync Services

The Sync Framework Team announced v1.0 Service Pack 1 of Sync Services for ADO.NET on Devices (Windows Mobile) on 9/16/2008. This download lets you synchronize between a server database and a SQL Compact database on a Windows Mobile 5 or 6 device.

This announcement makes it more important than ever for SSDS to align with ADO.NET Data Services architecture in advance of the release of “Astoria Off-Line.”

Visual Studio 2008 Service Pack 1 (General)

No new posts as of 9/17/2008 9:30 AM PDT 

Miscellaneous (MVC, WPF, WCF, Silverlight, etc.)

Mike Taulty attempts in his Silverlight and WPF - Sharing Library Projects post of 9/21/2008 to create the following releases with common source code:

  • Desktop Debug
  • Desktop Release
  • Silverlight Debug
  • Silverlight Release

“but loading this project into Visual Studio looks to confuse Visual Studio.” Mike is looking for help from MSBuild gurus.

The Windows Live Writer Team has released an update to the WLW beta that appears more stable than the original WLW Wave 3 Technical Preview that I’ve been using the the past few weeks. The update is still a beta, but this version has received a very attractive visual upgrade.

Click here for the installer that lets you select the Live applications to install: Messenger v9, Windows Live Movie Maker, Mail with Calendar synchronisation, Writer, Photo Gallery, Family Safety and the Outlook Connector. You can’t deselect updates to the WLW and Live Mail betas.

Rob Connery finally finished his MVC Storefront Part 21: Order Manager and Personalization video segment on 9/16/2008. Rob says:

The first part is devoted to expanding the Order management pipeline bits - Charging, Shipping, and Cancellation. I expand on Windows Workflow and also create a separate code-based pipeline for those who don't want to use WWF. The second part is all about plugging in User Tracking and what it means to plant data that you can mine later.

Aaron Skonnard’s announces in his The "Endpoint" show on Channel9 post of 9/16/2008 that his WCF Endpoint screencasts have moved to Channel 9. Following are links to the four current episodes:

WCF and WF posts alternate in four-week cycles. The next WCF post is due

Dan Wahlin shows you how to use Silverlight 2 User Input Controls for data input in his “Wahlin on .NET” column for the September 2008 issue of Visual Studio Magazine.

Jeffrey Palermo is interviewed by Bob Familiar about Architectural Concerns for the ASP.NET MVC Framework at Tech*Ed 2008 Developer. Here’s the deck:

Join Jeffrey Palermo for a boots-on-the-ground talk about how to fit ASP.NET MVC into your Web application architecture while avoiding some of the pitfalls common with Web Forms. We'll cover the following in depth: designing for testability, loose coupling, separation of concerns, automated testing of controller actions, dependency injection, and leveraging IoC container support from the MvcContrib open source project.

Forcing Gratuitious Pluralization of EF EntitySet Names Was a Very Bad Decision

Following is the full text of my How to Disable Unwanted EntitySet Pluralization in v1? thread of 9/20/2008 in the ADO.NET Entity Framework and LINQ to Entities (Pre-release) forum:

Jarek Kowalski says in EF Newbie Question on Pluralization: "Pluralization of entity set names and singularization of entity type names is not supported in EFv1 tools, but we're considering adding them in future releases."

As of EF v1's RTM I find the above to be incorrect. Manually singularizing EntityObject names pluralizes EntitySet names by renaming them to the singularized version and adding a "Set" suffix (e.g., renaming Customers to Customer generates a CustomerSet EntitySet name.) This requires manually changing the name of each EntitySet in the entity’s Properties sheet back to its original plural form.

Pluralization occurs with the Tools | Options | Database Tools | OR Designer | Pluralization property set to false. The Pluralization option description reads "Controls whether pluralization is applied to names when creating objects. Pluralization is only enabled for English." The description infers that only Pluralization is affected, which is what the EDM Designer is doing, not Singularization; LINQ to SQL's OR Designer does Singularization.

I'm curious why the EF tools devs foisted an ugly pluralization naming convention on unsuspecting users and then didn't choose the obvious approach to turning it off. Was it because the term "OR Designer" would denigrate the "EDM Designer?"

Further, beta testers weren't given the opportunity to complain about this unwanted and unhelpful operation or notified about the change in Jeff Derstadt’s Entity Framework RTM Breaking Changes post to the ADO.NET Team Blog of August 12, 2008.

How do I turn this so-called "feature" off?

Not only was the pluralization gratuitous, it was inserted by a stealth process into EF’s SP1 RTM. I discovered the operation when updating EF Beta 2 code for my forthcoming Professional ADO.NET 3.5: LINQ and Entity Framework book for WROX.

Although the Northwind database is the example data source in much of EF’s documentation, the only use of sample EntitySets having names suffixed with “Set” that I can find is Entity Containers (EDM).

If I had detected it in time, I probably would have signed the ADO.NET Entity Framework Vote of No Confidence manifesto.

I’d like to know how many EF beta testers requested this bogus “feature.” It’s arbitrary and capricious design decisions like this that led to the manifesto.

Note: Fortunately, Huageti Systems’ Huagati DBML and EDMX Tools has an EF (and LINQ to SQL) add-in that has a “renaming function that goes through all entity sets, entity types (classes), properties, and navigation properties in a EDMX file (EF designer) and renames them according to a user-selectable set of rules.”

Update 9/21/2008: The Singularizing EntityType and Pluralizing EntitySet Names with the Huagati DBML/EDMX Tools post of 9/21/2008 demonstrates the Huagati DBML and EDMX Tools’ capabilities.

More Fuel on the Fire: Mike Pizzo’s Reply to an Earlier Question

EF Data Architect Mike Pizzo wrote the following on 10/26/2007 in reply to JPAK’s Linq to entities and LIKE question in the same forum

Pluralization (and "Singularization") is one of the features we looked hard at for the designer (and underlying API) but had to cut for version 1.  The problem is not with the code (we actually have a couple of routines that are pretty advanced that we could borrow from) but with testing all of the different variations.

There is also the issue that the pluralization rules would be [E]nglish-language based (so we'd need a way to disable them for other languages), but we still believe even an [E]nglish-only version would be useful.

The only saving grace is that the designer does make it relatively easy to rename entities, but this is still one of my top 5 features that I wish we could have gotten in for version 1 (but leaves us something to do for V2... :-)

The above leads to questions regarding how and why the “feature” turned up in the final product.

Update 9/20/2008 11:45 AM PDT: According to Microsoft’s Noam Ben-Ami in a reply to my question:

We have heard other complaints about this behavior and it will be turned off in the next release, to which we are working on adding [E]nglish language pluralization/singularization. There is no setting at this time that controls this behavior.

Singularizing EntityType and Pluralizing EntitySet Names with the Huagati DBML/EDMX Tools

The Forcing Gratuitious Pluralization of EF EntitySet Names Was a Very Bad Decision post of 9/20/2008 complains about Entity Framework’s arbitrary renaming of EntitySet names by adding a “Set” suffix when manually singularizing EntityType names.

The post also mentions that Huagati Systems’ Huagati DBML/EDMX Tools has an EF (and LINQ to SQL) add-in that includes a “renaming function.” The function “goes through all entity sets, entity types (classes), properties, and navigation properties in a EDMX file (EF designer) and renames them according to a user-selectable set of rules.”

Installing the Huagati DBML/EDMX Tools and viewing an EDMX file in VS 2008 SP1’s EDM Designer activates the commands shown below in the first group:

Notice that the Tools perform similar renaming operations for LINQ to SQL models, enable comparing and updating LINQ to SQL O/R Designer’s diagram for database schema changes, and automating database documentation (similar to the EDM Designer’s documentation features) from the SQL Server 200x database. The updates from database schema changes feature alone is worth the modest license fee.

Note: My forthcoming “Speed O/R Mapping with LINQ to SQL” cover article for the December 2008 issue of Visual Studio Magzine will cover the Huagati DBML/EDMX tools and Damien Guard’s T4 Template for customizing LINQ to SQL.

Here are the Class and Property Naming Preferences settings to singularize Northwind EntityType names, pluralize EntitySet names, and remove the underscore from the Order_Detail(s) name wherever it occurs (except in Associations and AssociationSets):

Clicking OK makes the changes shown to Northwind.edmx (click image for full-size screen capture):

The log of changes made to the EDM in the Output window is a nice touch.

New Feature Suggestions:

  • It would greatly simplify maintaining my EF naming conventions if the Tools had similar capabilities for renaming (singularizing and pluralizing) many:1, 1:1, 1:many, and many:many navigation property names.
  • For consistency, underscores should be removed from Association and AssociationSet names
  • Automating EDMX documentation from SQL Server 200x (only) databases would be another welcome feature.

Full Disclosure: I received a no-charge license for the Huagati DBML/EDMX Tools. Providing software reviewers with no-charge licenses is a common industry practice.

Friday, September 19, 2008

Technorati Troubles Continue

Update 9/19/2008 12:0024 noon: ALLMost of my tag feeds are now working:

This wasn’t:

Some tag feeds didn’t come back until I replaced encoded spaces (%20) with + or removed query string extensions added by Technorati. The tags with spaces and query strings had worked previously.

End Update

Rob Diana’s Technorati: How the Mighty Have Fallen Mashable post of 9/15/2008 begins with this observation:

Late last week, Technorati was down for over 12 hours. I checked Friendfeed and Twitter, and there was barely a mention of it. I was surprised that Technorati being down garnered so little conversation. It seemed like Technorati went down, and nobody cared. The most recent blog entry only mentions an outage from the previous week, but the Technorati Twitter account does mention “A major bout with bots.”

One reason that Rob didn’t see much Twitter activity regarding the outage was too narrow a search term (technorati+down). A wider search on technorati alone would have uncovered my 15 tweets about the various problems I’ve been having with Technorati’s services over the past few weeks, to wit:

  • Technorati stopped indexing my posts
  • Technorati didn’t recognize my manual pings
  • Technical service didn’t respond to my inquiries
  • Eventually Technorati started indexing some of my posts
  • Those posts that were indexed weren’t included in all tag pages specified
  • RSS feeds for tag pages have been down since about 8/25/2008

Yesterday (Monday 9/15/2008), Technorati wrote the following on Twitter:

After our outage last week, we had to turn off Technorati Feeds and API. These will be coming online again on Monday. Sorry.

Yesterday was Monday, today is Tuesday, and tag feeds are still down. I’m surprised that no one but me appears to have blogged about that missing feature.

Rob asks:

When did people stop caring about Technorati? Is it the lack of new features? Or, is the decline just due to the fact that people do not care about what it offers any more? I find the lack of interest to be odd. Bloggers live by the numbers. They spend plenty of time checking the daily traffic statistics and subscriber levels. Technorati authority used to be one of the statistics that was checked often. So, what happened? The problem is that nothing happened.

And concludes that Technorati has stagnated at about 2.7 million unique visitors per month for the past year.

Instead of serving their blogger constituency, Technorati has made dubious acquisitions, such as Personal Bee and Blogcritics. Truly, nothing has or is happening at Technorati.

Following are links to my recent complaints about Technorati operations and customer service:

Thursday, September 18, 2008

SQL Server Data Services to Launch On or Before 11/14/2008?

Niraj Nagrani, SSDS senior product manager has scheduled his TechNet Webcast: SQL Server Data Services Launch (Level 200) for November 14, 2008, a few weeks after PDC 2008.

Here’s a screen capture of the announcement, in case the link disappears:

SSDS isn’t scheduled to enter production until 2009H1, so I assume that “Launch” refers to the public beta program, which was originally timelined to start July 1, 2008.