I'm commencing a fairly hefty project which requires an ORM solution.

Previously I've developed a rather hefty CSLA.net type framework which requires a lot of finger bashing to get useful results.  Unfortunately it's slow and I can't be arsed to maintain it any more.  I've toyed with SubSonic but didn't find it particularly stable or easy to deploy and Iv'e used NetTiers extensively but it's a bit heavy.

Anyone got any opinions on a half decent ORM which actually works properly, is rock solid stable, doesn't cost anything and requires as little coding as possible.  The only key features required are optimistic concurrency built in, strongly typed collections, transaction support, half decent documentation, a custom query interface that doesn't suck and support for SQL Server only.