tags:

views:

468

answers:

11

I am using the Entity Framework now and constantly having to write inline sql because Entity framework does not support full text search and other features. Is there a ORM out there that has many features that supports advanced queries? I feel if I am going to sometimes write inline sql I might as well do all of it in inline sql. Any help here

A: 

Have you looked at nHibernate?

If you search for nHibernate and full text search you'll come up with a variety of links that talk about that particular type of search implementation.

Paul Sasik
+5  A: 

NHibernate is one of the bigger OR/M alternatives and Open Source that I like. It is can do some pretty "advanced" things but has a steep learning curve.

Michael Gattuso
LINQ support there is, well, among the worst ones.
Alex Yakunin
A: 

Try with nHibernate

anishmarokey
A: 

Seconding what the others said, nHibernate. Plus I found this link re: full text search and nHibernate.

BioBuckyBall
+1  A: 

You might look at LLBLGen Pro or Telerik's OpenAccess, but NHibernate is going to be the solution with the largest community around it.

Brian Sullivan
Does LLBLGen Pro have good performance?
Luke101
+5  A: 

I feel if I am going to sometimes write inline sql I might as well do all of it in inline sql

Seriously? When using any ORM, you're always going to hit situations where it is better, cleaner, or more performant, to use SQL or call a stored proc. You shouldn't just blindly trust it do absolutely everything for you in all situations.

Marcus
"If I have to write this procedure in assembly for really good performance, I might as well write the rest of my app in assembly too..."
Svish
For that matter just too damn complicated to do it in ORM, try select statements with 20 tables and sub queries. It's just simpler in sql sometimes.
PeteT
+3  A: 

Most ORMs will still require some inline SQL every now and then. NHibernate, Linq 2 Sql, etc. don't support full text search out of the box (NHibernate has NHibernate.Search which uses Lucene.NET to perform full text search, Linq 2 Sql has access to stored procedures that you can create that use full text search).

This doesn't mean you should scrap using an ORM altogether though. There's a ton of repetitive plumbing code that ORMs can save you from writing and the general use cases are all relatively easy to execute (e.g. CRUD operations) with any ORM.

Kevin Pang
+1  A: 

Like most people here I'd recommend NHibernate, but you may want to look into using it in conjunction with CastleProject's ActiveRecord implementation. NHibernate by itself can take a bit of getting used to, but when you throw ActiveRecord on top of it things get a lot easier. I was able to do an EntityFramework->NHibernate/ActiveRecord conversion really quickly.

Arthur C
Are there any books or really good tutorials on nhibernate/activeRecored? Also, do you think the lifespan of active record will be high? I am expecting support for at leat 10 years. Thanks
Luke101
Unfortunately not really, which is sort of a pain, but also sort of a non issue. It's really easy to do the majority of db integration with Active Record/NHibernate, and the Castle tutorials online pretty much give you all you need to know. If the Castle site is lacking then a quick Google/Bing search will result in you finding lot of people out there blogging about stuff they've figured out how to do with it.As far as how long it will be around. Its open source so you don't have to worry about it "going away", just take the source and compile it yourself, then you'll always have it.
Arthur C
A: 

I'm a fan of SubSonic

Jon.Stromer.Galley
+5  A: 

Take a look at:

Alex Yakunin
Alex Yakunin
+2  A: 

Mindscape LightSpeed is an o/r mapper for .NET that supports full text search (via Lucene but extensible so you could add your own).

It also supports LINQ, has a Visual Studio integrated designer with full schema round tripping so you can work model-first or database-first - whichever takes your fancy :-)

There is also a free version that you can use to decide if it is right for you.

I hope that helps.

traskjd