//Initialize Db connection only...no updates done public static DbResult Initialize(string ConnectionString = null) { DbResult dbResult = new DbResult(); try { //attempt to determine the types to keep track of automatically //by reflection (op result doesnt really matter) AutoFindTypesToKeepTrackOf(); dbResult = SetConnectionStringInDatabaseHandler(ConnectionString); //failed to set con string //we stop here since setting the con string is necessary to contine if (dbResult.StatusCode != DbGlobals.SUCCESS_STATUS_CODE) { return(dbResult); } //try to create stored procedures for fetching //parameters for any other stored proc //this makes calls to any AutoParams method much faster //if its successfull otherwise we default to executing raw sql CreateStoredProcedures(); var source = GetConfigurationSource(ConnectionString); //initialize active record ActiveRecordStarter.Initialize(source, TypesToKeepTrackOf.ToArray()); _is_init_successfull = true; //all is good dbResult.SetSuccessAsStatusInResponseFields(); } catch (Exception ex) { //they have called the initialize method again if (ex.Message.ToUpper().Contains("MORE THAN ONCE")) { _is_init_successfull = true; dbResult.StatusCode = DbGlobals.SUCCESS_STATUS_CODE; dbResult.StatusDesc = "SUSPECTED DOUBLE INITIALIZE: " + ex.Message; } //some other failure else { dbResult.SetFailuresAsStatusInResponseFields(EXCEPTION_LEAD_STRING + ex.Message); } } return(dbResult); }
//Creates the Db if it doesnt exist, updates the db schema and initializes the db connection public static DbResult CreateDbIfNotExistsAndUpdateSchema(string DbConnectionString = null) { DbResult apiResult = new DbResult(); try { AutoFindTypesToKeepTrackOf(); //create the db apiResult = ExecuteCreateDatabaseSQLIfNotExists(DbConnectionString); //we failed to create the db if (apiResult.StatusCode != DbGlobals.SUCCESS_STATUS_CODE) { return(apiResult); } //try to create stored procedures for fetching //parameters for any other stored proc //this makes calls to any AutoParams method much faster //if its successfull otherwise we default to executing raw sql CreateStoredProcedures(); IConfigurationSource source = GetConfigurationSource(DbConnectionString); //initialize active record ActiveRecordStarter.Initialize(source, TypesToKeepTrackOf.ToArray()); ActiveRecordStarter.UpdateSchema(); //we are all good _is_init_successfull = true; apiResult.SetSuccessAsStatusInResponseFields(); } catch (Exception ex) { if (ex.Message.ToUpper().Contains("MORE THAN ONCE")) { _is_init_successfull = true; apiResult.StatusCode = DbGlobals.SUCCESS_STATUS_CODE; apiResult.StatusDesc = "SUSPECTED DOUBLE INITIALIZE: " + ex.Message; } else { apiResult.SetFailuresAsStatusInResponseFields(EXCEPTION_LEAD_STRING + ex.Message); } } return(apiResult); }