コード例 #1
0
        /// <summary>
        /// Deletes personalization state corresponding to the specified users and specified pages from the database.
        /// </summary>
        /// <param name="scope">The personalization scope.</param>
        /// <param name="paths">The paths indicating where to save the data.</param>
        /// <param name="usernames">The user names.</param>
        /// <returns></returns>
        public override int ResetState(PersonalizationScope scope, string[] paths, string[] usernames)
        {
            bool hasPaths = !(paths == null || paths.Length == 0);
            bool hasUsers = !(usernames == null || usernames.Length == 0);

            var count = 0;

            var connection = new MySQLPersonalizationConnectionHelper(connectionString);

            connection.OpenConnection(true);

            if (scope == PersonalizationScope.Shared)
            {
                try
                {
                    if (paths == null) // reset all state
                    {
                        return(PersonalizationProviderProcedures.my_aspnet_PersonalizationAdministration_DeleteAllState(true, ApplicationId, connection));
                    }
                    else
                    {
                        return(PersonalizationProviderProcedures.my_aspnet_PersonalizationAdministration_ResetSharedState(ApplicationId, paths, connection));
                    }
                }
                catch (Exception ex)
                {
                    if (writeExceptionsToEventLog)
                    {
                        WriteToEventLog(ex, "MySQLPersonalizationProvider - ResetState");
                    }
                    throw;
                }
                finally
                {
                    connection.CloseConnection();
                }
            }
            else
            {
                DateTime dateTime = Convert.ToDateTime("2038-01-19 03:14:07.999999"); // MySQL TimeStamp MaxValue

                if (!hasPaths && !hasUsers)
                {
                    count = PersonalizationProviderProcedures.my_aspnet_PersonalizationAdministration_DeleteAllState(true, ApplicationId, connection);
                }
                else if (!hasUsers)
                {
                    count = ResetUserState(ResetUserStateMode.PerPaths, dateTime, paths, null);
                }
                else
                {
                    count = ResetUserState(ResetUserStateMode.PerUsers, dateTime, paths, usernames);
                }
            }
            return(count);
        }