views:

169

answers:

2

I was recently involved in a project that required a smart client. We used SQL Server Compact Edition and Microsoft Sync Services for ADO.NET. Our online server was SQL Server 2005. A quasi-ORM/DAL (very specific to our needs) was handcoded by a member of our team. Creating a custom ORM in this scenario cost us quite alot of development time that could have been utilized elsewhere. Can anyone recommend a 3rd party ORM that is designed with smart clients in mind?

I guess I am looking for an ORM that integrates the following:

  • standard forward and backwards object mapping functionality
  • a flexible and fine grained synchronization framework (ie,I want to be able to specify validation and conflict resolution strategies on an object by object basis)
  • support for XBAP or Silverlight clients would be nice, but is not essential.

I should also note that I am not explicitly tied to using MSSQL or MSSQL CE for data.

I've only found one product called Telerik OpenAccess that appears to meet these needs. Does anyone have any experience with it? http://www.telerik.com/products/orm.aspx

Any other suggestions?

+1  A: 

NHibernate or Linq-2-SQL would be your standard answer here :)

I personally like NHibernate very much, but how many SQL-dialects it comes with out of the box, I'm unsure of. But it's hugely popular, so I dont think it would be too hard to find other dialects than MYSQL / MSSQL

cwap
+1  A: 

Yes, we are using OpenAccess. After handcoded ORM - like you - started to find a more faster/cheaper/not-so-painfull solution, and OA was the winner.

I think NHibernate is a great tool too, but I'm often read about performance and modeling problems with middle/big databases. I tried it, it's a different world for me.

Telerik said that CE support will be added in 2009 Q1, and I hope it's true:) So I think you should give a chance to OA, couse of

  • it has great forward and backward mapping
  • wizards
  • well configurable process
  • class and attribute or/and xml based mapping
  • I have good performance experiences
  • And what can be great in smart client enviroments: caching, lazy load, static compiled trick
  • LINQ, SQL, OQL
  • Disconnected model, n-tier suppor (okay, just a class but works:)
  • Silverlight sample
boj