So, that's normal in a networked application scenario, but if it's happening all the time on one of your business objects, then the UpdateConcurrencyType might need to be changed to Off or OptimisticRowVersion if it's set on OptimisticAllFields. The exception being throw contains properties that show the row causing the data collision.
Is there a better way to accomplish what I'm trying to do? I basically need to temporarily store data for a report, and if certain conditions are met save it to the database. Otherwise, the data should never be saved to the db.