Comparing .NET O/R Mappers

ORM Compare LightSpeed EntitySpaces Telerik OpenAccess and Microsoft LINQ providers

We get frequent inquiries about how LightSpeed compares with other object relational mapping frameworks that are available. Last year we published our comparison matrix that compared LightSpeed, LINQ to SQL and LINQ to Entities. We’ve now updated the comparison matrix to also include EntitySpaces and Telerik OpenAccess.

See the product comparison here.

First off, this is not an exhaustive feature comparison – there are many small and handy features included in all object relational mappers which didn’t get included (LightSpeed included). For example, while EntitySpaces does not support ASP.NET Dynamic Data, it does include templates to rapidly create a CRUD site should you want one which achieves a similar goal to Dynamic Data. This matrix is designed to give a rough idea of how the products compare.

We have only included LINQ to SQL, LINQ to Entities, EntitySpaces and OpenAccess because of space constraints. Thanks also to Mike from EntitySpaces who helped in clarifying the feature set available with EntitySpaces.

Consider: Pricing

Features are handy, but need to be considered against price. At the time of writing (and please remember prices are always subject to change), the products in our matrix are priced as follows:

LightSpeed – Free Express edition; commercial editions up to $499 USD (not per developer, often the entire price for your whole team)
LINQ to SQL / LINQ to Entities – Included in the .NET Framework and Visual Studio
EntitySpaces – Up to $299 USD per developer (company fee of $499 if you want source)
Telerik OpenAccess – Free for open source databases; commercial licenses up to $599 USD per developer

Pricing is a complex thing and we’ve only included the cheapest and the most expensive editions in the ranges listed but hopefully it helps in the comparison of the object relational mappers available at the moment.

Consider: Frequency of updates

Also consider the frequency of enhancements. Microsoft enhancements to their LINQ-to-X products are tied to .NET framework releases and therefore result in needing to use workarounds for a considerable amount of time. LightSpeed, EntitySpaces and OpenAccess all get updates several times a year, resulting in faster turn around of enhancements. Mindscape has also offered nightly builds of LightSpeed for some time and therefore developers get access to new features as they’re built.

I hope that helps people when deciding on the object relational mapper for their next project. Please leave any comments you have about this comparison as comments on this blog post.

kick it on DotNetKicks.com

Tagged as LightSpeed, Products

22 Responses to “Comparing .NET O/R Mappers”

  • What does this table mean by “Multiple identity generation support” and “Single table inheritance”?

    LINQ to Entities supports many-to-many and supports many of those databases using third party providers.
    LINQ to SQL has a debug visualizer that ships with the samples.

    Does LightSpeed support SQL Server 2000 or SQL CE?

    [)amien

  • Thanks for the comparison. I think LightSpeed is a great product, but I just find one/two of the options you mentioned in the comparison a bit misleading. For instance the LINQ support is only partial and other solutions actually have better LINQ support. Also touting Single Table Inheritance as a feature is IMHO also misleading as this is actually currently the only inheritance mapping scheme supported whilst other solutions like LINQ to Entities provide support for other inheritance mapping schemes as well.

    Keep up the great work.

  • @Damien Thanks for the heads up – I’ll add the many-to-many support. The reason the other provides aren’t selected is it’s meant to be an out-of-the-box comparison. Not one where you have to go hunting for the extra parts and/or have to buy them. Happy to fix things that are misleading (as an aside, the LINQ-to-Entities part was completed initially by Andrew Peters who now works for you guys :-)

    LightSpeed supports SQL CE but not SQL Server 2000 since it’s not longer a supported product although I believe the only bit we would need to tweak is the paging code to get it working in the core product. We may add support for SQL 2000 as we have recently had an influx of requests for it.

    Multiple identity generation relates to how LightSpeed will manage the identities of entities. It supports patterns such as the KeyTable pattern for more efficient identity generation (as well as many more types). Does LINQ-to-Entities provide identity generation capabilities like this or just accept GUID, Int, etc that either can be assigned or automatically assigned by the database?

    Happy to have your feedback and will make changes based upon it. Much like working with Mike from EntitySpaces, we do want to create a fair comparison for people :-)

    @Carel Indeed improvements to our LINQ API are coming to fill the gaps that exist. My aim is to bring additional information to the matrix via hover-over tips to highlight this. I didn’t want to get into a situation where there were a huge pile of trailing stars with references. To be fair to the others involved I have also given then a tick when they don’t have a fully rounded LINQ API as well (OpenAccess has parts missing, EntitySpaces supports SQL Server only as it leverages the LINQ-to-SQL LINQ provider for LINQ operations).

    Out of interest Carel, would you like to see additional inheritence features in future versions?

    Thanks for your comments.

  • I liked the look of Lightspeed initially and would have purchased, but no medium trust support means its no good for most web development. The other orm’s you list all work under medium trust. Your dev experience is good but I see OA and EF catching you up in next few releases. I guess the LS use of reflection is ruling out medium trust?

    Mindscape response: Darren, thanks for your feedback. Medium trust support will be in tomorrow’s build (see the point about frequency of updates!). The reasoning for it not working was that LightSpeed uses Light Weight Code generation which is much faster than the default reflection that the other providers use (or they use mapping files). LightSpeed can now be configured to use the less restricted reflection capabilities when in a medium trust environment at the expense of a little bit of performance. If you had asked for medium trust we would have added it for you. OA and EF are improving, but keep in mind that these products were available before LightSpeed (and in OA’s case – years before LightSpeed 1.0, L2E was in beta). We’re not resting – see the previous post on “What would you like to see in LightSpeed 3.0″. Appreciate your feedback.

  • Interesting comparison but I miss LLBLGen and DevExpress XPO in it. I’ve always tried to find a good comparison but never found anything near this one.

    Keep up the good work!

  • You forgot about ActiveRecord ,that sits on top of NHibernate and doesnt require xml configuration.

  • A comparison of .NET ORMs without a mention of NHibernate?

  • I think your comparison matrix not including NHibernate which is completely free and probably the most robust ORM solution in the market is beyond biased.

    And yes HBM mapping is a pain however there is an open source project available Fluent NHibernate that allows auto mapping of entities, creation of conventions for your database or at the very least static mapping in code using lambda expressions to make it completely refactoring friendly. Fluent NHibernate’s auto mapping, static mapping and NHibernate HBM can be used in any combination together.

  • What kind of ORM comparison doesn’t even mention NHibernate? – one that sees it as a competitor maybe.

  • Thanks for the comparison matrix. You should include LLBLGen to the matrix as well.

  • @John-Daniel Are you therefore saying that LightSpeed natively connects to all those databases without requiring the ADO.NET provider for any of them?

    [)amien

  • where is nhibernate?

  • @Jason Thanks for your feedback. As I stated, the comparison was constrained by physical space (as well as the time looking into the products). I’ll keep in mind though if we expand upon it :-)

    @Rodrigo Good point, ActiveRecord would be good to add and wasn’t something I’d thought about (the databases listed are based on the volume of queries we get as a company asking for comparisons and, to be honest, ActiveRecord doesn’t come up often). If we expand to add additional O/R Mappers I’ll add it.

    @Garry There is mention of NHibernate, it has it’s own section explaining our thoughts about it. I think everybody is aware that NHibernate will pretty much support anything you throw at it as long as you’re willing to grab different contrib-projects, do a little blog hunting for a missing feature that somebody has developed etc. It’s a great project and we wholeheartedly recommend it for complex mapping scenarios (as stated on the matrix page) but it’s simply not something we get asked to compare ourselves to. We added the block about NHibernate to try and ensure people didn’t think we were ignoring it.

    @Chris We do mention it, and do state that it’s a very feature rich product. I seriously doubt there is much that NHibernate wouldn’t do. As with my response to Chris – we don’t get asked about it all that much which, I assume, is because it’s a very well known product and people know how it works.

    @Bob We do mention it. All the products are effectively competitors so it’s not just avoiding the competitors as much as basing the selection on what we get asked to compare.

    @Brian Thanks for your feedback – hearing a lot of interest in LLBLGen.

    @Damian LightSpeed includes all the required provider assemblies in the installer so that developers don’t need to go hunting for the .NET provider.

    @Josh NHibernate has two paragraphs at the end explaining that it’s fully featured and very capable.

  • I am not quite sure you can say that LTE supports stored procedures. It can be done, but not out of the box and it is pretty of painful.

  • Note, this response is also inline above. I’m just adding it here so that any folks who have been set to be notified of responses will receive it.

    @Darren Thanks for your feedback. Medium trust support will be in tomorrow’s build (see the point about frequency of updates!). The reasoning for it not working was that LightSpeed uses Light Weight Code generation which is much faster than the default reflection that the other providers use (or they use mapping files). LightSpeed can now be configured to use the less restricted reflection capabilities when in a medium trust environment at the expense of a little bit of performance. If you had asked for medium trust we would have added it for you. OA and EF are improving, but keep in mind that these products were available before LightSpeed (and in OA’s case – years before LightSpeed 1.0, L2E was in beta). We’re not resting – see the previous post on “What would you like to see in LightSpeed 3.0″. Appreciate your feedback.

  • someone did ask about medium trust in your forums a while back, i will take a look at the new build. Thanks

  • @Carel Lotz LightSpeed supports Concrete Table Inheritence (CTI). We have just posted about this since it was something people didn’t realise was available in LightSpeed.

    http://www.mindscape.co.nz/blog/index.php/2009/03/01/getting-started-with-inheritance-in-lightspeed/

  • Hi John-Daniel,

    Have you looked at XPO yet?

    http://www.devexpress.com/Products/NET/ORM/features.xml

  • I’m not so sure if I want our product to be on a ‘look we’re better than them’ chart at a competitor’s site. But then again, anyone who thinks a comparison chart on a vendor’s website has always these characteristics:
    1) the product sold by site owner has always 1 negative mark (so it seems they’re including all the important things to test on)
    2) the compared products always suck compared to the product sold by site owner.

    IF you add us, please let me know so I can explain properly how/why some things aren’t there. (for example I see ‘soft-delete’ support, which is really bogus, as soft-deletes are easily addable in every o/r mapper).

  • Hi Frans, thanks for dropping by :-)

    Appreciate your feedback and understand the view that the comparison is bias. We realise there is no escaping that and in order to be as transparent as possible we:

    – Worked closely with Entity Spaces to have them complete the table rather than have us just play around and guess what was supported.
    – Added features to the comparison based on requests from Entity Spaces.
    – Discussed the points listed with Damien Guard in relation to the Microsoft offerings (see above + we exchanged a bunch of emails).

    We have absolutely tried to include all features that folks have asked for.

    The soft delete example I am happy to agree to disagree on. I did enjoy your long blog post on the subject. Providing it for our users wasn’t a huge deal to add but they seem to like it so we’re keeping it – if they don’t like how we do it they don’t have to use it and can roll their own as you would recommend :-)

    One of the challenges of the comparison table is that we want it to be easy for people to use. We don’t want to have to explain a point or make an argument for it. To ensure that we’re fair, we adopted a very open policy to what constitutes a tick or cross. Take for example stored procedures support – many places you’ll find people arguing that the EF has very poor SP support however in our view it does have some support and that’s good enough. We didn’t want to be overly harsh just because it did not meet our own feature capability in a given area.

    We have no immediate plans to add LLBLGen Pro but if you’re interested you can always email me: jd@mindscape.co.nz and we can discuss the possibility further.

    Thanks again for dropping by :-)

  • JohanJvR, we have looked at XPO and elected not to include it as the last update appears to be from mid 2007.

  • @John-Daniel Trask: DevExpress XPO ORM has come a long way since 2009 and it has many new great features. It’s high time to include XPO in the comparison matrix, I believe.

  • Leave a Reply

Archives

Join our mailer

You should join our newsletter! Sent monthly:

Back to Top