Is the UPDATE statement being built by the data source dynamically, or is it executing a stored procedure? If it's executing a stored procedure, then make sure that SET NOCOUNT ON is not turned on in the sproc (you might have to explicitly call SET NOCOUNT OFF), since it's the one that is returning the number of records affected. Also, if you have a trigger that is updating the value, and you're using a TIMESTAMP field for concurrency, then each time the trigger modifies the row, the timestamp is also going to change, meaning that the value within the BO is not going to match, so you're going to get a concurrency exception when you update the row again (since the trigger just modified it). If this is the case, consider moving to row versioning; change the timestamp column to an integer column, and tell the business object to use row versioning.