Added cloning to database model and methods needed to keep it up to date while the migration operations are processed.

Should the setter have internal access only to prevent accidental mutation now that we've had to remove the readonly on the underlying field?