That's a good idea, let me try that. Whether or not that fixes it, that's useful to implement now because of the ease in flexibility, my only concern is with Transaction.AddNewlyCreatedDBObject(), which we have a couple cases of creating simple blocks. Is there a way to add objects to the database without a transaction as well, or is it necessary to use a transaction then?
Edit: Scratch that, it appears that AddNewlyCreatedDBObject() just adds db objects that were newly created To the Transaction, not the database.
Will get back on whether this fixes undo recording issue.