I'm evaluating DO 4 and LLBLGen Pro (since they are the two candidates left in my little comparison), and I would like to hear what you have to say to your defence? :)

(I think DO 4 is better in my case, it's a new application, just designing it right now. However, if everything goes well we need to scale upp, and the included hw-licenses won't be enough. This detail is different between LLBLGen Pro and DO 4, very different. It would make my life easier if you could convince me to pay you more money ;) )

A few notes about this application:

  • Commercial, sold as an service
  • Web based (ASP.NET 4.0, MVC)
  • MS SQL 2005/2008 (don't know really)
  • ExtJS, I think RESTful with plain JsonStores? (LiveUI sounds nice, but license. Not really ORM-question, but..?)
  • Each customer has their own database
  • New versions to deploy very often (I think DO 4 has a big advantage here, simple and smooth upgrade, doesn't need to sync db-upgrade and app-upgrade?)
  • I need to support versioning on some tables (custom implementation by me is ok, but it would be great if it could be done somewhat transparently. How doable is it?)

In case you need more details or clarification, just tell me :)

Thanks / Oskar Johansson

asked Sep 24 '10 at 20:31

Onkelborg's gravatar image


edited Sep 24 '10 at 20:31

A side note about LiveUI: currently this is mostly a research / marketing evaluation project for us, so I recommend you to study it only from educational purposes - its future is unclear (at least, speaking about its public version). We're focused mainly on DataObjects.Net.

(Sep 25 '10 at 08:21) Alex Yakunin Alex%20Yakunin's gravatar image

Hi again! We haven't purchased any license yet, but it's just a matter of time.. (Until the trial ends, kind of ;) ) However, LiveUI still sounds interesting.. I'm still working on making a solid ground for this application, and I don't want to end up with a project that's hard to make changes to.

I think there's a market for LiveUI. Anyway, if I'm going for LiveUI, is there anything in particular to consider?

(Besides, I'm glad I'm using DO4.. :) )

[edit]I've not investigated it too much yet, but how much work do you think it's to rewrite LiveUI to ExtJS 3.0?[/edit]

(Oct 18 '10 at 17:02) Onkelborg Onkelborg's gravatar image

Hello, LiveUI project was frozen and is not supported anymore. We still use it internally but I would not recommend you to.

(Oct 19 '10 at 03:27) Alex Ilyin Alex%20Ilyin's gravatar image

Well, I got that part that it's not supported, but if I gave it a spin anyway, is there anything you know it's broken etc? (I'm thinking that I can fix errors myself etc.)

(Oct 19 '10 at 06:06) Onkelborg Onkelborg's gravatar image

Seems like Application Model (and Component Model) is stable enough to be used in production (We used it with WPF and found no problems). But there might be problems with controls and components like Tree or Grid.

If you would like to play with LiveUI I've uploaded latest version here http://x-tensive.com/Downloads/Download.aspx?LiveUI.net\LiveUI.net-v0.7.0.0.zip

(Oct 19 '10 at 08:41) Alex Ilyin Alex%20Ilyin's gravatar image

404: Resource Not Found :/

Ah.. Missed \

(Oct 19 '10 at 08:43) Onkelborg Onkelborg's gravatar image

Thanks :) I've converted it to .NET 4.0 now (somewhat, anyway.) I've fixed a few couple of bugs. In the config-file for LiveUI, the modules section, the location there, is that only for the resource-files?

(Oct 19 '10 at 15:13) Onkelborg Onkelborg's gravatar image

I'll answer that for myself: it's only for resources :)

(Oct 19 '10 at 17:37) Onkelborg Onkelborg's gravatar image

If you get some questions feel free to contact me mail: alexandr.ilyin@gmail.com, skype: alexandr_ilyin

(Oct 21 '10 at 03:09) Alex Ilyin Alex%20Ilyin's gravatar image

One Answer:

Beyond DO4's great attributes like PERFORMANCE, EASE OF USE, GREAT SUPPORT, RAPID DEVELOPMENT & IMPROVEMENT... each of which IMO makes DO4 the clear winner...

Still looking into code generators? Really?

When we (and DO4) have AOP now? Do you know what a nightmare it can be manage generated files?

answered Sep 25 '10 at 03:24

ara's gravatar image


Performance is one thing I can't compare. Ease of use is kind of hard to get an idea about without at least some experience of them both. I've got a feeling DO is going to win here, but I've got nothing to compare with. (Nightmare would be that my database and my code goes out of sync and I have to manually figure out what's not working. A failed upgrade on many, many sites isn't popular..)

Code generators, I see the advantages of not having extra tools, source files etc. to take care of, but for me, it's not that important. It can be justified?

(Sep 25 '10 at 05:13) Onkelborg Onkelborg's gravatar image

Ara, thanks for your answer!

Yes, ease of use is, likely, the most important factor. DO4 has some pros and cons here:

  • Its initial usage is pretty easy;
  • On the other hand, the deeper you dive into it, the more new aspects you open. In many cases we offer different approaches to common problems, but each of such decision is justified - i.e. we were carefully choosing the approach in this case. So you should take into account that you'll finally learn a lot during its usage.
(Sep 25 '10 at 08:35) Alex Yakunin Alex%20Yakunin's gravatar image

DO differs from the most ORM tools mainly because we are adepts of extremely rich domain models. Compared to other tools on the market, DO is like WPF vs other GUI frameworks: it allows to build very complex business logic with ease without caring much about such stuff as saving the changes, lazy loading, rollback handling and so on; moreover, there is very rich entity life cycle events (see e.g. Session.Events).

(Sep 25 '10 at 08:37) Alex Yakunin Alex%20Yakunin's gravatar image

Also, DO is built for modular development: you can write unified services (that may rely on their own persistent entities) providing global functionality for the whole Domain.

Many of our own core services are based on this approach - try to reflect VersionValidator or OperationCapturer. Even such a large piece as DisconnectedState is very loosly coupled with everything else - in fact, it is almost 100% extension (it uses some internal stuff mainly because we could afford this; + we added such properties as Session.IsDisconnected to make it more usable).

(Sep 25 '10 at 08:40) Alex Yakunin Alex%20Yakunin's gravatar image

So if you like the idea of rich domain models, DO is for you. On the other hand, if you're adept of anemic domain models, you should take a look @ NH or EF.

(Sep 25 '10 at 08:42) Alex Yakunin Alex%20Yakunin's gravatar image

And about new LLBLGen Pro:

As far as I can judge, currently its only benefit is mapping designer. The ORM framework there is ~ 5 years old - i.e. it's simply far from being contemporary.

So if I'd consider using LLBLGen Pro, I'd almost 100% avoid the ORM it offers. I like its designer, but completely dislike the way its ORM framework is designed. Just compare their class/namespace reference to what's shipped with DO (EF, NH). I can't imagine why Frans put nearly everything into a single namespace.

(Sep 25 '10 at 08:51) Alex Yakunin Alex%20Yakunin's gravatar image

Also, I hate dealing with tons of generated code violating DRY everywhere. Even generated code must be beautiful & simple to read; if template author simply don't know how to extract the logic to methods of base classes, that's sad.

Why I write about this: ~ 1 year ago we tested its contemporary version @ ORMBattle, and I what I remember the best is that generated code there was really huge - about 1 Mb of C# code for our Northwind model. It was nearly 10 times more than any other tool had produced, and that was really surprising.

(Sep 25 '10 at 08:55) Alex Yakunin Alex%20Yakunin's gravatar image

So if you consider LLBLGen Pro, personally my opinion is:

  • Its designer looks really nice and convenient; likely, it's way much better then what you'll have with EF by default. Also note that using EF designer with 200+ types currently is almost impossible - designer may "hang" for several minutes handling such simple action as scrolling. Most likely, LLBLGen Pro handles this better.
  • Everything else has not competitive advantages (try to name any :) ).
(Sep 25 '10 at 08:58) Alex Yakunin Alex%20Yakunin's gravatar image

And finally, I'm writing a large article comparing DO and NH - if you'll wait for few days, it may help you to make a decision.

(Sep 25 '10 at 09:02) Alex Yakunin Alex%20Yakunin's gravatar image

I think I'm convinced, but that article sounds interesting anyway :)

(Sep 25 '10 at 11:47) Onkelborg Onkelborg's gravatar image

The article publication is delayed, but I can share an early link for feature-based ORM comparison we're working on:

The most comprehensive feature-based ORM comparison ever :)

The document is a bit incomplete yet; there can be some mistakes (it wasn't checked by community yet). But it is quite comprehensive (~ 270 features).

A copy of this document is edited by ORMBattle.net participants, so shortly there should be its version including all the tools we tested.

Don't forget to check "Remarks" & "Sources" sheets.

(Sep 28 '10 at 15:10) Alex Yakunin Alex%20Yakunin's gravatar image

Btw, this explains why there is still no article - I want to publish a really good one.

(Sep 28 '10 at 15:15) Alex Yakunin Alex%20Yakunin's gravatar image
Your answer
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
toggle preview

powered by OSQA