I've been evaluating their UI controls for a while now and I have been generally very impressed with both their products and their excellent support. XPO comes from this background and has the main features that I want:
- Support for the Compact Framework.
- A LINQ provider.
- Generation of schema from object definitions (you can also generate objects from an existing schema).
- Wide support for a variety of databases (including my target database, VistaDB).
- Easy data binding of objects to controls (as you'd expect from DevExpress!).
It does have a few quirks that I'm a little unsure about at the moment. The main ones for me now are:
- All associations with multiplicity greater than one have to be two-way.
- The automatic schema generation mechanism will not widen string fields in existing schemas.
However, these are only small niggles and the product is seems to be well constructed, uses best practices, has good support from a much respected tool vendor and is realistically priced. If you are coming to ORM from a data-driven background, then you will probably even be comfortable with having to always having to have have two sides to an association! It is worth noting that XPO takes care of the other end of the relationship for you - if I add an order to a customer, then the order's customer is automatically set...neat and sweet!
If you are looking for an easy to use commercial ORM that is reasonably priced, then I would recommend you take a look. If you are not looking for a non-commercial ORM, or want to learn about the world of object-relational mapping, then head off to NHibernate.
Edit: Just thought it worth noting that the "small niggles" about XPO are in the context of my current project, which has a relatively simple object model - one for which I would happily manually write the data access code. I would not be comfortable recommending XPO for complex object models at this stage.