Selecting a ORM

Posts   
 
    
JohanF
User
Posts: 3
Joined: 27-Jan-2008
# Posted on: 27-Jan-2008 11:13:37   

Hi!

I´m looking at buying a ORM mapper and came down to two candidates. LLBLGen and Vanatec OpenAccess. As testing and comparing the two softwares is not that quickly done I thought I might ask in the forum for different aspects. Feels a bit like comparing apples and pears sometimes but anyway.

So my question is simply, any input, on pro and cons for the two. My target DBs are MS SQL 2005 and Firebird (server and embedded).

Thankful for any input!

Cheers Johan

DvK
User
Posts: 318
Joined: 22-Mar-2006
# Posted on: 27-Jan-2008 22:15:23   

I took a brief look at Vanatec's product, looks okay. But I wasn't that enthusiastic about their "query language". It looks like their using plain sql-statements in code to fetch data ?

LLBLGen does a far better job here....using it's compile-safe advanced predicate and filtering system. What interested me though was their disconnected solution, something with an ObjectContainer, that could be useful.

Anyway, I'd opt for LLBLGEN ! Take care...

grtz, Danny

stefcl
User
Posts: 210
Joined: 23-Jun-2007
# Posted on: 28-Jan-2008 10:13:01   

So my question is simply, any input, on pro and cons for the two

Hello, I don't know much about vanatec and therefore I can't tell you if it's good or not but here are the main reasons why I chose LLblgen:

1) Unlike many ORMs, it's easy to get started with if you follow the tutorial. When I started, although I was a .net newbie (coming from the java world), it only took me one day to learn about most aspects of llblgen. It's very straightforward... you can create a new project from an existing DB and be ready to use your DAL in visual studio within minutes, no mapping files to edit (nhibernate), no command line based tasks...

2) The query engine is extremely powerful! You can create 100% compile time checked queries of any complexity (including subqueries, multiple joins, aggregates) in an easily readable manner and with full intellisense support.

3) The generated entities and collections can be easily extended to become nice business objects if you want to use them this way. They implement a lot of interfaces which allows you to directly bind them to your UI controls, sort them, filter them, perform validation tasks....

4) Distributed scenarios are very well supported. Very important if you're planning to use webservices and/or .Net remoting.

5) The product is relatively inexpensive and well known for the quality of its customer support. Your questions are answered by qualified professionals (and even by the lead developper of llblgen himself) in no time on the forum and it's common to see other llblgen users kindly trying to help by sharing their own experience about your problem.

My target DBs are MS SQL 2005 and Firebird (server and embedded).

You might be interessed to know that they are both very well supported. My current app runs on firebird and lets the end user choose between server or embedded mode. As you may know if you have been evaluating many ORM tools, firebird is sometimes not as well supported as other RDBMS like Sql server which are more popular in the .Net world, even if advertising doesn't state it clearly.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 28-Jan-2008 10:35:39   

We normally don't comment on competing products as in: feature comparisons. Vanatec needs our brand name 'LLBLGen' as an ad-word on google to get their goods advertised so it gives a bit of a perspective on things I guess wink .

What I'd like to highlight is one of the key differences: One of the main differences between openaccess and llblgen pro is that vanatec uses post-compilation IL generation and we use pre-compilation C#/VB generation to add persistence code to classes, where we also provide the classes for you, with vanatec you can use your own (albeit with restrictions, you can't alter all possible class hierarchies for persistence for obvious reasons. )

The downside of post-compilation IL generation is that it's hidden 'magic' that is added to your classes: instead of the code you wrote, the classes are actually quite a lot bigger at runtime after the post-compilation step. For some people this isn't a problem, however others don't like 'magic' being added to their code. Whatever your preferences, there's one thing that limits this system: extensibility. With pre-compilation C#/VB code generation, you're free to extend/alter the code generated to fit your project. LLBLGen Pro comes with one of the most advanced code generation systems available on .NET which allows you to extend the process easily. The downside of our process is that we require a base class for the entity classes. For people who want to work solely with POCO systems, this is a showstopper. We demand that base class as we don't want to alter your classes at runtime (through dynamic proxy subclassing so you need to write your classes with virtual properties etc. ) or at post-compilation (through IL injection), we want you to see the code as it is ran. (customers get access to the runtime lib sourcecode under a bsd2 license so you can alter it as you see fit)

POCO as a development approach is actually a myth. If we compare openaccess with nhibernate in the following situation:

myOrder.Customer = myCustomer; // is this now true? -> myCustomer.Orders.Contains(myOrder);

in openaccess it is, (also in some other poco oriented libs) but not in nhibernate. 'POCO' therefore isn't really there, you still have to live with the borders forced on you by the persistence library used.

If you have more questions about LLBLGen pro details, please let us know simple_smile

Frans Bouma | Lead developer LLBLGen Pro
JohanF
User
Posts: 3
Joined: 27-Jan-2008
# Posted on: 29-Jan-2008 09:26:28   

Thank you all for your comments.

Yes, the disconnected mode in OpenAccess is interesting as I will have portable devices for this also (mobilephones and PDAs). But I could live without it and code that myself. When it comes to mobile phones, I probably need to do that anyway...

And yes, it often say "support for Firebird" but it´s really bad, so that is a strong point for me that LLBLGen has good support for it.

What I also find very attractive is so many of the forum users praise the support. As a small company and the only developer, that can be just as important as a working product in my experience!

The fact that all source is there for me to study or change and not some unknown code injected at a later stage is always a plus.

Well, with no girlfriend home for another two weeks, I think I´ll spend this weekend with LLBLGen! stuck_out_tongue_winking_eye

Cheers /Johan

mihies avatar
mihies
User
Posts: 800
Joined: 29-Jan-2006
# Posted on: 29-Jan-2008 09:30:01   

I don't know about Vanatec but judging from what others are saying it would be a no go for me. Magic is something I really don't want and this is a showstopper for me. Furthermore, if you have template based code generator as LLBLGenPro has, you can even modify/add/edit templates to modify the generated code. To me, LLBLGenPro is the best ORM product out there, or at least the best of those which I checked in the past.

vanatec
User
Posts: 1
Joined: 29-Jan-2008
# Posted on: 29-Jan-2008 10:46:09   

Hi all, since you are talking about us (vanatec) here, I believe it's Ok to clarify some things and targeting several statements in several messages: - yes, we did use llblgen as a google ad keyword, why not? google vanatec and find several others using our name. That's normal marketing. we don't "need" llblgen brand name and we also don't anymore. People having heard about one O/R M are potentially interested in others. At the end everyone needs to do his evaluation and find the best product for his needs. btw: llblgen is also a good tool, one of very few we really consider as a competitor (specially if you are more database driven than object model driven) - "we" don't discuss competitors in our forums and we try to avoid to do so individually as well; there is enough space and different use cases for several o/r mappers. I can say, that we basically compete somewhat with NHibernate and LINQ to SQL and we get so many questions about differentation to them, that we made some statements on our website. - the initial query language has been OQL. OQL is not "our" query language, but standard based. currently most of our customers are using LINQ which we support as well since the first pre-releases, some of our customers are even using both, since both make sense in some cases. - we also have templates and provide many areas to influence the code - we believe to have a good firebird support, based on customer experience with bigger e-commerce solutions. if you feel, that we don't, let us know.

-Peter Brunner

ps I'm not technical and I will not add any other comment here.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 29-Jan-2008 10:56:51   

vanatec wrote:

Hi all, since you are talking about us (vanatec) here, I believe it's Ok to clarify some things and targeting several statements in several messages: - yes, we did use llblgen as a google ad keyword, why not? google vanatec and find several others using our name. That's normal marketing. we don't "need" llblgen brand name and we also don't anymore.

Glad to hear that, Peter.

JohanF wrote:

Thank you all for your comments. Yes, the disconnected mode in OpenAccess is interesting as I will have portable devices for this also (mobilephones and PDAs). But I could live without it and code that myself. When it comes to mobile phones, I probably need to do that anyway...

LLBLGen Pro works in disconnected mode without any extra code. We have the change tracking inside the entities and not in some context/session object like nhibernate/linq to sql etc. uses, so you can serialize an entity or set of entities across a wire, using remoting or xml and changes are tracked and packed with it. So you can send a set of entities from service to client, alter them there in a UI, send them back and directly persist them on the service without any extra code.

I'm not sure what you want to do on the PDA's btw. Do you plan to store entities local in a SQL CE db?

Frans Bouma | Lead developer LLBLGen Pro
JohanF
User
Posts: 3
Joined: 27-Jan-2008
# Posted on: 29-Jan-2008 12:53:02   

Hi all,

first of all, I havn't tried Firbird and OpenAccess, so I'm NOT saying that they have bad support for it! It was coming from other ORM tools I've been looking at .

As for the PDA/Mobile phone part. If it's an MS based OS, SQL CE is an option or simply plain XML files. If I go for the XML solution, they could be used on a Sony Ericsson/Nokia phone also where SQL CE is impossible. Data should be stored and altered on the phone for later update on main system again.

So for now, I'm only looking at the Windows based coding. Mobile phones is a bit of a world on their own anyway!