First of all, I would like to thank you for your work. It's a great source of inspiration for my WPF & Silverlght application.
I have a question about the "update" phase.
You replaced "ViewModelBase" with "ObservableObject" for the INotifyPropertyChanged base class implementation.
The consequence is that a class of the Model can inherit from this class and notify the observers after an update (a ViewModel -or a View if it directly binds it-).
But the other consequence is : whenever the repository has succeeded or not in saving the changes, each viewmodel or view that binds this object reflects the changes automatically.
If we take your sample application with the Customers. Suppose that we have a form to create or modify Customer informations.
We have a CustomerViewModel for this form. But we can have in our application several CustomerViewModel instances of the same customer, typically in a datagrid containing the Customers and their main properties.
We don't want that the datagrid reflects the changes until the Customer has been saved (and commited) in the repository.
My idea is to add a "CustomerUpdated" event in the CustomerRepository class that is raised after SaveChanges.
Therefore, every CustomerViewModel related to this Costumer can call NotifyPropertyRaised on all the Customer properties.
What do you think about it ?
Does anyone have ever faced this situation? How did you solve it ?