You should look at the ProjectTracker sample - specifically ProjectEdit or ResourceEdit in PTWin.
You must not call BeginEdit, CancelEdit or ApplyEdit on the object ever.
Instead you must call the methods on the bindingsource - and even then you never call BeginEdit yourself, as it is automatic.
The alternative is to turn off IEditableObject processing. That is a new 3.0 property you can set on each business object (probably in the constructor, though you could also do it before binding the object to your UI. If you set that property then the rules are reversed: you must call BeginEdit, CancelEdit and ApplyEdit yourself.
The drawback to this manual approach, however, is that you lose in-place editing capabilities in grid controls, because you can't get into the process deep enough to call the edit methods at the right points (at least not in my experience).
Copyright (c) Marimer LLC