I think you're right, in general practices.
But, I'll give you a situation where upserts would be implemented. I have an application where information from the stock exchange is fed (from a comma separated text file) into the application, a number of calculations are applied to the information inserted and then different graphs are built.
Now, the information entered various in size depending on the graph they want, but it can for several hundred thousand records.
The problem is, most of the time the information is already available in the database, but on other times it isn't and again sometimes the information outdated. So the best solution is to reload all the records again (from the text file) and then create the graph from the new information.
This can also be done using the return values from the SaveEntity method for an update and if that returns 0 records I should go ahead and save the record. But this would require at least 2 trips to the database per record which is not necessarily very efficient.
On the other hand with an upsert this would very easily be implemented utilizing a single database trip!
Comm ca?
Thanks,
Bashar Lulu