Over the past few days I’ve finally had some time to give LightSpeed 3.0 a bit of a test drive. Nothing extensive so far, but enough to get some initial impressions.
The quick summary? I like it.
My testing has been with a couple of different projects / databases. One is a greenfield ASP.NET MVC application I’ve been playing about with, and the other is a quick test project I've created in order to run a few tests with LightSpeed against Ignition’s existing Site Foundation Framework codebase (mostly there I wanted to test the single table inheritance features, but it also gave me a chance to test out how easy it was to move to LightSpeed from LINQ to SQL).
A few quick (and I mean quick!) initial thoughts;
I really like how the ID fields aren't visible in the designer's view of entities. It shows the resulting relationships, but excludes the ID properties themselves. It might end up to be something I dislike later on, but for now it really makes it easier to view the model in the designer at a glance.
Being able to push schema changes back to the database is an incredibly useful feature. Previously when working with simple applications, all I really needed to use SQL Management Studio for was to create tables/columns/relationships. It certainly didn't feel a lot like a "design" process, and using the LightSpeed designer surface instead is a much more pleasurable and visual experience. I haven't looked at Migrations yet, but can easily see how that's going to take things to a new level entirely.
Plugging in Dynamic Data was pretty painless, and there's a screencast you can watch which makes it even simpler. Dynamic Data support is one of those things you'll either care about, or you won't. Personally I find it a pretty useful thing to have around when you need to scaffold up some basic CRUD pages incredibly quickly. Especially during the initial stages of a project, when you want the ability to enable testers/developers to be able to edit data in your database but haven't got around to creating the admin pages yet.
I came across an issue with a couple of reserved keywords in my database, however I quickly found a couple of posts in the Mindscape forum with the fix. One describing the incredibly simple workaround, along with a bit more information covering the pros and cons of the workaround. Nice.
The support for table level inheritance looks good. So far I've only had a quick tinker, but it looks like LightSpeed will do what we need to do, and do so easily. We have some serious issues with our current L2S model not playing nicely with Dynamic data in a couple of places due to the table inheritance we're using, meaning we need to do a few manual edits to the model after it's been generated. It's a real pain, and one of the main drivers for us to be looking at other data access technologies (however I also hear those problems are fixed in Dynamic Data 4.0). The edits required are fairly small changes, but having to do them every time you touch the model is a bit (!) of a pain.
In order to test whether LightSpeed’s model had the same issues I tried to convert our existing model over to a LightSpeed one. Initially it wouldn’t convert, but after copying and pasting our model across to a new DBML file and migrating that one everything came across perfectly – almost too good to be true. I ran up Dynamic Data and it all seems fine. Also testing with a couple of other (smaller/simpler) L2S models they all converted fine first time (which confirmed my suspicion that the problem with our first conversion was to do with my model, and nothing to do with LightSpeed).
So as I said these are initial impressions only, and I feel like I really haven’t even touched the surface of what LightSpeed can do yet. Rather it’s been a quick test as to whether it’s going to be a fit for what myself and Ignition needs, and so far the fit feels good. As superficial as this sounds, having access to a slick looking toolset is a nice feeling.
It’s also nice to be using a product where the roadmap feels a lot more definite, and where product support has a personal and accessible feel to it. After some of the time we’ve spent working around L2S, that support option is an important factor which helps to justify using a commercial O/RM over the free options of L2S and Entity Framework.
Tags: .NET, Mindscape, LightSpeed, O/RM, LINQ to SQL