So I have spent the last few days trying to get ObjectSpaces working for some fairly straightforward stuff working with the pubs database that goes beyond the few simple examples they give in the Tech Preview docs. So far the experience is less than pleasant.
Conceptually I am enamored with ObjectSpaces. I am somewhat of an object bigot, and would love to cut out all the ADO.NET code I always end up writing that amounts to a mapping layer per app to populate my objects and store their state after changes. I haven’t spent any time yet looking at any of the commercial products that do this because for the work and writing I do, I generally try to stay away from solutions that result in vendor lock in. I want to teach people how to get things done with the framework, not third party products. That is what they pay their marketing folks for. (OK, I realize this makes me an unpaid Microsoft marketeer, but that is a whole separate discussion).
I was able to get some one to one, one to many, and many to many scenarios working, especially for reading data. When it came to persisting changes, things got dicier until I realized that it was not hacking foriegn key constraints with inserting new object graphs too well. If I got rid of the FK constraints (not often an option in a production DB), I was able to persist new objects with one-to-one and one-to-many relations without a problem.
The real problem at this point is a combination of lack of documentation and REALLY uninformative exceptions. It is already a tough transition to make since all the talking to the database is done for you based on the mapping XML files that you author. There is no code to step into to see what is going on. At least when you have something really gooned in the mapping files, you will get an error message with some info on where you are breaking the schema.
But if problems occur at the DB, no usable information gets propagated back to you in your app. You just get really useful information like:
Error(s) updating one or more objects.
Yeah. Big help, thanks. Should have just stuck with an exception message like “You’re screwed” until you have something useful to say.
Add to that the fact that in all of the three newsgroups (beta, private, and public) related to ObjectSpaces that I have found, people are more interested in debating the philosphies of ORM and whether MS should create a ORM layer or leave it to third party products than discussing how to actually use the product.
I think OS has a lot of potential and I want to figure out where it fits into the apps I develop. But we are going to need some better information to work with before that becomes viable for the masses.
Anyone out there working with it successfully for real world projects involving complex object mappings tied to other-than simple demo databases?