They’re ok if all you want to do is display data in a GridView control (and sort it, page it, etc). They become a pain in the neck the moment you actually want to modify data. The only I could get modifications to work is was by naming the parameters of your class methods exactly the same as the table column names (I’m using strongly-typed datasets in this application). I suppose it’s not so bad if you’ve named the table columns sensibly. But the database I’ve inherited doesn’t have this property.
What’s worse is the error messages you get when you haven’t configured something correctly. You get an entirely unhelpful message like “ObjectDataSource could not find a non-generic method that has parameters”. The number of search results for that phrase should have clued me in that this control was sketchy.
That’s one of the drawbacks of these new controls from Microsoft. They’re supposed to be better than code you’d write yourself–but God help you if they don’t work and you have to figure out what’s wrong. It’s not like you can debug them.