tags:

views:

366

answers:

5

I am going to use SQL Server in my project, for that I want to select an ORM with it. I have some experience with NHibernate as an ORM. In fact, given the nature of that project ( MySQL the backend) NHibernate is really, the only choice.

I have also used strongly typed dataset as my ORM, and that's having Microsoft Access as the backend. I have also some experience with LINQ2SQL.

Now, I know, all paths lead to Rome; a lot of ORMs can handle sql server well. But I want the best ORM in terms of

  1. Development time. That is, drag and drop designer that maps my entity classes to the database schema. So that if I change my schema my entity classes are updated automatically.
  2. Multiple database Support. The ORM must be able to handle multiple databases queries, in an optimum way. Also, multiple connection string support must be done easily too.
  3. Extensibility. If I want to add a query than I don't want to mess with the designer files; they are a pain in neck to ruffle with.

That's probably it. Any ideas?

A: 

ADO .NET Entity Framework?

It seems to meet each of the requirements to some degree, although not perfectly

John Weldon
I'd wait for Version 2. My impression is that V1 of EF is not quite ready for prime time.
Robert Harvey
Agreed. Just an option :)
John Weldon
+3  A: 

LLBLGen could be an option for you.

It has one of the best designer apps, and it's pretty feature-rich.

Philippe Leybaert
A: 
  • Typed Datasets : 0 / 3
  • Linq To Sql : 1 / 3 It can do item 3. It can do some of item 2: multiple connection strings for different queries are no problem - but if you want multiple databases in a single query, you'll have to use views or a stored procedure to get there. Item 1 is a bust - if you change schema, you must refresh the entities yourself in the designer.
David B
It's far quicker to use SQLMetal to generate the Linq-to-SQL data context rather than using the designer - http://msdn.microsoft.com/en-us/library/bb386987.aspx
Nick
Sure, but that's still not going to "update automatically" unless you make it a pre-build task or something.
David B
+5  A: 

Based on his requirements, LLBLGen is the way to go. Be aware that there are big differences between LLBL and NH. LLBL is ORM/Generator, your entities will have a lot of code pre-generated, and it starts from the database. So if drag and drop is what you want then by all means use LLBL.

epitka
I will agree with this: we have used LLBLGen in several applications with great success. Remember that the LL stands for Low Level: the Entities that are created are derived directly from the tables and it is the user's responsibility to build business objects using the Entities as a *start point*.
Godeke
+1 for LLBLGen.....been using it for a few years and it is excellent, and the query language is extremely powerful.
tbone
A: 

A strongly typed dataset should not be considered as an OR/M tool. A (strongly typed) dataset is just an in-memory representation of the data in your database (1:1 representation).

When you use an OR/M , you 'convert' the data that exists in your database, with in-memory business objects (which do not have to be a 1:1 representation of your DB model, can contain additional logic, etc...).

Maybe you could have a look at the MS Entity Framework, but, as far as I know right now, NHibernate is still the better solution when it comes to features, performance, abstraction, and you have more control over it (but, then this comes maybe a bit with a cost (in development time). (No drag 'n drop design, but you can generate your datamodel from your mappings).

(late response - network failure ... )

Frederik Gheysels