There's been an e-mail thread going around in an internal Microsoft Business Framework (MBF) discussion list of the best way to handle concurrency conflicts.  Someone brought up the novel idea of asking users what they would like to happen.  So that's what I'm doing.

Currently in MBF we support two modes of concurrency which you can specify for each entity type: at the entity level and the property level.  Entity level concurrency will ensure that when you save an entity, all the property values of that entity must match what exists in the database in order for the save to succeed.  Property level concurrency will ensure that when you save an entity, only those properties which have been modified must match what exists in the database in order for the save to succeed.

Developer Questions:

  1. Are there other variations or modes such as timestamp that you would like to see?
  2. What kind of information do you want returned when a conflict exception occurs?
  3. In what ways do you want to be able to resolve a conflict?  For example, should there be a way to force the save to overwrite the database values?

User Questions:

  1. Part of MBF involves UI generation.  How do you want to interact with the UI to resolve conflicts?
  2. In order to avoid user interaction, would something like a user-defined rule-based method of resolving conflicts be useful?

Any feedback you can give will help the MBF team out.  Thanks.