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
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.
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.
Seconding what the others said, nHibernate. Plus I found this link re: full text search and nHibernate.
You might look at LLBLGen Pro or Telerik's OpenAccess, but NHibernate is going to be the solution with the largest community around it.
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.
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.
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.
Take a look at:
- LINQ queries in DataObjects.Net. If you're interesting in most complex parts, start from the tail.
- Advanced LINQ in DataObjects.Net. Some underlying SQL queries are shown there.
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.