Umm, you can't do much about the optimistic locking issue since it shows concurrent modifications, and that has something to do with your app data and the way users update data in your database. You could definitely work around this by partitioning your data. That is, if you have data A which has parts B and C then you might want to split A into B and C so that users less likely run into a race for updating data.
For transaction isolation I would say that's not a good idea because it will make your life even harder. You could definitely look into a less restrictive isolation level but you should make sure that won't break anything in your app.
In any events, the key here is to minimize the need for a lock and normalizing your database in a way that in most of your use cases concurrent modifications become impossible. You should also look into decreasing the amount of time a transaction is active. In addition, read an entity very close to when it should be updated.
Farzad-
|