// Function that executes a select statement.
        protected MySqlDataReader DoLoad(DatabaseQuery query)
        {
            if (!Valid)
            {
                return(null);
            }

            if (query.Comparator == null)
            {
                query.Comparator = Identifier;
            }

            int columnCount = query.Count;

            query.Add(Database.Tables.Generic.CREATED_ON_COLUMN_NAME);
            query.Add(Database.Tables.Generic.LAST_UPDATED_COLUMN_NAME);

            MySqlCommand    command = new MySqlCommand(query.Select, Database.Connection);
            MySqlDataReader reader  = command.ExecuteReader();

            if (reader.Read())
            {
                Loaded = true;
                DateTime creationTime   = reader.GetDateTime(columnCount++);
                DateTime lastUpdateTime = reader.GetDateTime(columnCount);

                if (CreatedOn < creationTime)
                {
                    CreatedOn = creationTime;
                }

                if (LastSaved < lastUpdateTime)
                {
                    LastSaved = lastUpdateTime;
                }
            }
            else
            {
                Loaded = false;
            }

            return(reader);
        }
        // Function that executes an insert/update statement.
        protected int DoSave(DatabaseQuery query)
        {
            bool exists = query.Exists;

            if (Valid && exists)
            {
                // Use the default comparator if there is none existing.
                if (query.Comparator == null)
                {
                    query.Comparator = Identifier;
                }

                Loaded    = true;
                LastSaved = DateTime.Now;
                query.Add(Database.Tables.Generic.LAST_UPDATED_COLUMN_NAME, LastSaved);

                MySqlCommand command = new MySqlCommand(query.Update, Database.Connection);
                return(command.ExecuteNonQuery());
            }
            else
            {
                // Add a new row and get it's ID.
                CreatedOn = DateTime.Now;
                LastSaved = DateTime.Now;
                query.Add(Database.Tables.Generic.CREATED_ON_COLUMN_NAME, CreatedOn);
                query.Add(Database.Tables.Generic.LAST_UPDATED_COLUMN_NAME, LastSaved);

                MySqlCommand command = new MySqlCommand(query.Insert, Database.Connection);
                command.ExecuteNonQuery();

                if (!Valid)
                {
                    id     = ( int )(command.LastInsertedId);
                    Loaded = true;
                }

                return(1);
            }
        }