private void _addVersionedScript( CswUpdateSchemaTo UpdateTo ) { // Instance the UpdateDriver CswSchemaUpdateDriver CswSchemaUpdateDriver = new CswSchemaUpdateDriver( UpdateTo ); CswSchemaUpdateDriver.CswNbtSchemaModTrnsctn = new CswNbtSchemaModTrnsctn( _CswNbtResources ); if( false == CswSchemaUpdateDriver.AlreadyRun() || CswSchemaUpdateDriver.AlwaysRun ) { if( false == CswSchemaUpdateDriver.AlwaysRun ) { CswSchemaUpdateDriver.SchemaVersion = _makeNextSchemaVersion(); CswSchemaUpdateDriver.Description = CswSchemaUpdateDriver.ScriptName; if( false == _isDuplicateScript( CswSchemaUpdateDriver ) ) { _UpdateDrivers.Add( CswSchemaUpdateDriver.SchemaVersion, CswSchemaUpdateDriver ); } } else { CswSchemaUpdateDriver.SchemaVersion = new CswSchemaVersion( 0, '#', 0 ); CswSchemaUpdateDriver.Description = "Run Always Script: " + CswSchemaUpdateDriver.ScriptName; _UpdateDrivers.Add( CswSchemaUpdateDriver.SchemaVersion, CswSchemaUpdateDriver ); } } }
private void _addRunAfterScript( CswUpdateSchemaTo UpdateTo, string Description = null ) { CswSchemaUpdateDriver CswSchemaUpdateDriver = new CswSchemaUpdateDriver( UpdateTo ); CswSchemaUpdateDriver.SchemaVersion = new CswSchemaVersion( 99, '#', _RunAfterScripts.Count ); CswSchemaUpdateDriver.Description += Description ?? string.Empty; if( false == _RunAfterScripts.Contains( CswSchemaUpdateDriver ) ) { _RunAfterScripts.Add( CswSchemaUpdateDriver ); } }
/// <summary> /// Ensure that schema update transactions are handled in a uniform way with respect to /// transaction management and exception reporting, while avoiding creating a circular /// dependency between the schema update logic and the transaction class. /// </summary> /// <param name="CswUpdateSchemaTo"></param> public CswSchemaUpdateDriver(CswUpdateSchemaTo CswUpdateSchemaTo) { _CswUpdateSchemaTo = CswUpdateSchemaTo; }//ctor