I don't know - that sounds very odd. If it were generating an exception it would exit the method right away, not just skip that block.
Are you sure base.IsDirty is returning true? Maybe the object hasn't changed, and only some child object has changed? (that'd make base.IsDirty different from this.IsDirty)
Copyright (c) Marimer LLC