Nightly news, 22 July 2011

This week I have been mostly squirting cats. However, one does not live for pleasure alone. Here’s what we’ve shipped in this week’s builds. Available, as usual, from the downloads page (free editions) or the store (retail editions).


  • Added the option to create a blank migration if there are no changes to apply, and a command to clear all proposed deltas so you can code them by hand from scratch instead of modifying the designer generated ones
  • Fixed an error in Visual Studio if you try to run a migrations project which contains no migrations
  • Updated the SQLite provider to 1.0.74, and switched back to mixed mode assembly.
  • Fixed MySQL extractor to infer tinyint(1) as boolean. Again
  • Fixed a LINQ error with queries of the form Where(x => x.Assoc.Id…)
  • Changed how uniqueness validation works when the unique field is declared on a non-leaf class in a STI hierarchy

Web Workbench

We’ve made a number of fixes around spurious syntax errors on CSS selectors and the like. We know there are still a few more to go so please let us know if you still see spurious syntax errors!

We’ve made a couple of other fixes to do with processing of Sass and Less imports, and around outlining of Sass and Less files. We’ve also improved the presentation of Sass compiler error messages.

SimpleDB Management Tools

  • Fix for the list of domains being truncated if you had more than 100 domains

The summer sale is here!

Mindscape Summer Sale 2011

Note: This sale has now ended.

For our friends in the northern hemisphere it’s that time of the year – it’s warming up and there’s a holiday approaching. We thought it would be a great time to offer a special for the summer so that you have a great toolbox at your disposal for when you’re coding away on the beach.

Here’s the deal:

For the price of our WPF or Silverlight suites you can get a full Mindscape Mega Pack upgrade at no extra charge! And to save you money in the long run we’ll also add an additional six months of updates! Now that will afford you a few extra Mojitos!

So that’s every Mindscape product — WPF, Silverlight, Windows Phone, LightSpeed, SimpleDB, you name it — and 18 whole months of nightly builds, upgrades and entirely new products! All at a fraction of the price of other competing suites.

Throw on your skate shoes and roll over to the Summer Sale Page!

Nightly news, 24 September 2010

The big news this week is, of course, the beta release of Silverlight charting — check it out! And the other big news this week is the spiffy Silverlight book control — check that out too! Meanwhile, though, back in the salt mines we’ve also shipped a few less glamorous enhancements and fixes.

NHibernate Designer

  • If you’ve drag on a table with two one-to-many associations, we’ll now try to guess unambiguous names for the two associations.

SimpleDB Management Tools

  • Fixed an issue that could cause errors when dragging into LightSpeed in VS2010.


  • If you’ve drag on a table with two one-to-many associations, we’ll now try to guess unambiguous names for… wait, is there an echo in here?
  • Fixed an issue in the PostgreSQL Server Explorer add-in that could cause errors when dragging into LightSpeed in VS2010… no, seriously, is there an echo?
  • Added LINQ support for DateTime.AddSeconds, AddMinutes, AddHours, AddMilliseconds, AddDays, AddMonths and AddYears.
  • Added support for simple calculations and method calls in a LINQ ‘let’ clause.

As always, grab the free editions from the downloads page or the retail editions from the store.

Migrating to SimpleDB

This post is about what to consider when making the move from a traditional RDBMS to Amazon’s SimpleDB data store. As you may be aware, LightSpeed supports working with SimpleDB along with traditional databases so we get questions about migration every now and then and I wanted to gather thoughts on this in one place. LightSpeed provides many benefits to .NET developers wanting to work with SimpleDB so following any general point I’ll be mentioning how LightSpeed can aid in migration.

SimpleDB does not have data types

Unlike when you define a schema in a traditional database, in SimpleDB everything is one type – string. Want to set decimal precision? No luck. Want to set a maximum field length? Go away. This is not to say that having no data types beyond string is necessarily a bad thing, it is simply something that you need to keep in mind when planning a migration to SimpleDB.

How LightSpeed helps: Despite everything being a string, you define your domain model using CLR types (decimal, int, datetime, etc). The nice thing about this is that LightSpeed will take care of the data conversion for you without you needing to worry. If your model has a decimal on it and we get some string back from SimpleDB, we’ll convert it on the fly to the CLR decimal that you actually want to be working with. We also format things so that numeric and date comparisons still work even though SimpleDB supports only lexical comparisons.

No Stored Procedures

There’s not much more to say here other than they’re not supported and I doubt they ever will be. You’ll need to drop stored procedures and use dynamic querying. But hey – you’re in NoSQL land now, surely you’re one of the cool kids who doesn’t like Stored Procedures anyway right? :-) The same goes for much of the database infrastructure that you may be used to – triggers, auditing, etc, does not exist with SimpleDB. It is a simple data store.

SimpleDB does not have foreign keys or relationships.

SimpleDB does not have a notion of FK’s or associations/relationships. You can still have CustomerID on a ShoppingCart, but it won’t have referential integrity enforced at the database level.

How LightSpeed helps: LightSpeed is a convention driven ORM and will pick up that properties named [Type]Id are probably meant to be associations. If you have really funky naming, you’ll need to wire up the associations manually but that’s a one off effort. LightSpeed can then manage the constraints (one to many, many to one, one to one, many to many).

However, SimpleDB doesn’t support joins or multi-statement queries or anything like that. So one thing that LightSpeed can’t do relationship-wise is eager loading. All associations are lazy-loaded: given SimpleDB latency, the n+1 problem can cause significant performance issues. LightSpeed caching can help here.

SimpleDB does not have field constraints

Currently using a unique constraint on a database field to make sure you don’t get duplicates? That won’t fly in SimpleDB. You’ll need to make sure that you’re checking uniqueness (or any other type of constraint you want to enforce) at the application layer, not at the database layer.

How LightSpeed helps: LightSpeed includes many validations such as uniqueness checking – as well as many more – that mean you don’t need to do the constraint enforcement at the database level. This has many advantages beyond plugging the holes in SimpleDB, for example if you have a uniqueness validation failure it’s much easier to present the user with a meaningful error message about the given entity rather than having to handle an insert error message. Again, though, you’ll want to watch out for possible performance implications — a uniqueness validation incurs a round-trip to SimpleDB every time an entity is validated.

SimpleDB is likely slower than your relational database

We’re not saying SimpleDB isn’t web scale, but more that your queries are now performed as HTTP requests. There is an inherent latency in this which is unlikely to exist in a traditional server solution (where the database may be on the same machine, or on the same network segment meaning it’s extremely fast to query). This is a general consideration when looking at the move to SimpleDB. Amazon have been working to improve this situation in various ways – batching of inserts & updates, faster querying if you’re issuing calls from within the Amazon hosting environment (calls to SimpleDB are faster if undertaken from an EC2 instance in the same data center).

How LightSpeed helps: By abstracting away your querying and passing it to LightSpeed you can work with us to support new scenarios with SimpleDB. For example, one user noticed a performance issue that we could solve with a new feature added by Amazon – batched puts. By adding this support into LightSpeed any SimpleDB user working through LightSpeed could simply update to the latest version to get the performance benefits of batched puts. If you handwrite your queries for SimpleDB you would need to manually go through your code base and update to support the new features of SimpleDB as they are released.

LightSpeed caching can also help with data that changes relatively infrequently such as reference data.

This sums up some of the key differences you are likely to encounter when dealing with SimpleDB. We’ve worked hard to try and make LightSpeed abstract away some of the inconsistencies associated with using SimpleDB in your projects and hope that it eases transition between any data store that LightSpeed supports. Interested in testing out SimpleDB for yourself? Grab these tools:

Mindscape LightSpeed
Mindscape SimpleDB Management Tools

VS File Explorer, SimpleDB Management Tools and the Visual Studio Gallery

If you’re using Visual Studio 2010, get to know the Extension Manager. Extension Manager is a new feature that makes finding and installing Visual Studio extensions a snap — just search or browse, click the extensions you like the look of, and you’re good to go.

We’re pleased to announce that you can now install our VS File Explorer and SimpleDB Management Tools products through Extension Manager. Fire up Tools > Extension Manager, click Online Gallery, and type “mindscape file explorer” or “mindscape simpledb tools” into the search box, click Download and voila!

But it gets better! Previously we had separate Free and Professional editions of SimpleDB Management Tools. We’ve now got rid of those two editions. Instead, there’s now a single edition of SimpleDB Management Tools 2010, which you can download for free. This gives you the old Professional behaviour for 14 days, then if you don’t purchase a licence reverts to the old Trial behaviour (limiting you to 20 search results). To buy a licence and keep the unrestricted behaviour, you can just click a link within the product — no need to download a separate retail version and reinstall!

Finally, a handy tip: if you have Microsoft’s Visual Studio Pro Power Tools installed, it will periodically check for updates for all your extensions. It’s free and has lots of other goodies in as well — and it’s a one-click install through Extension Manager. Check it out!


Join our mailer

You should join our newsletter! Sent monthly:

Back to Top