예제 #1
0
        //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);
        }
예제 #2
0
        //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);
        }