RoleProvider.DeleteRole(String, Boolean) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Удаляет роль из источника данных для настроенного applicationName
.
public:
abstract bool DeleteRole(System::String ^ roleName, bool throwOnPopulatedRole);
public abstract bool DeleteRole (string roleName, bool throwOnPopulatedRole);
abstract member DeleteRole : string * bool -> bool
Public MustOverride Function DeleteRole (roleName As String, throwOnPopulatedRole As Boolean) As Boolean
Параметры
- roleName
- String
Имя удаляемой роли.
- throwOnPopulatedRole
- Boolean
Если задано значение true
, исключение создается, когда roleName
имеет один или более элементов, а roleName
не удаляется.
Возвращаемое значение
Значение true
, если роль была успешно удалена; в противном случае — значение false
.
Примеры
В следующем примере кода показан пример реализации DeleteRole метода.
public override bool DeleteRole(string rolename, bool throwOnPopulatedRole)
{
if (!RoleExists(rolename))
{
throw new ProviderException("Role does not exist.");
}
if (throwOnPopulatedRole && GetUsersInRole(rolename).Length > 0)
{
throw new ProviderException("Cannot delete a populated role.");
}
OdbcConnection conn = new OdbcConnection(connectionString);
OdbcCommand cmd = new OdbcCommand("DELETE FROM Roles " +
" WHERE Rolename = ? AND ApplicationName = ?", conn);
cmd.Parameters.Add("@Rolename", OdbcType.VarChar, 255).Value = rolename;
cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName;
OdbcCommand cmd2 = new OdbcCommand("DELETE FROM UsersInRoles " +
" WHERE Rolename = ? AND ApplicationName = ?", conn);
cmd2.Parameters.Add("@Rolename", OdbcType.VarChar, 255).Value = rolename;
cmd2.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName;
try
{
conn.Open();
cmd2.ExecuteNonQuery();
cmd.ExecuteNonQuery();
}
catch (OdbcException)
{
// Handle exception.
return false;
}
finally
{
conn.Close();
}
return true;
}
Public Overrides Function DeleteRole(ByVal rolename As String, ByVal throwOnPopulatedRole As Boolean) As Boolean
If Not RoleExists(rolename) Then
Throw New ProviderException("Role does not exist.")
End If
If throwOnPopulatedRole AndAlso GetUsersInRole(rolename).Length > 0 Then
Throw New ProviderException("Cannot delete a populated role.")
End If
Dim conn As OdbcConnection = New OdbcConnection(connectionString)
Dim cmd As OdbcCommand = New OdbcCommand("DELETE FROM Roles " & _
" WHERE Rolename = ? AND ApplicationName = ?", conn)
cmd.Parameters.Add("@Rolename", OdbcType.VarChar, 255).Value = rolename
cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName
Dim cmd2 As OdbcCommand = New OdbcCommand("DELETE FROM UsersInRoles " & _
" WHERE Rolename = ? AND ApplicationName = ?", conn)
cmd2.Parameters.Add("@Rolename", OdbcType.VarChar, 255).Value = rolename
cmd2.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName
Try
conn.Open()
cmd2.ExecuteNonQuery()
cmd.ExecuteNonQuery()
Catch e As OdbcException
' Handle exception.
Return False
Finally
conn.Close()
End Try
Return True
End Function
Комментарии
DeleteRole вызывается DeleteRole DeleteRole методами класса для удаления указанной Roles роли из источника данных для настроенного ApplicationName.
При удалении роли из источника данных убедитесь, что также удаляются связи между именем пользователя и удаленной ролью для настроенной applicationName
.
Если throwOnPopulatedRole
значение равно true
, а роль, определяемая параметром roleName
, имеет один или несколько членов, создайте исключение ProviderException и не удаляйте роль. Если throwOnPopulatedRole
это false
так, удалите роль независимо от того, является ли она пустой.
Если указанное имя роли не существует, является null
пустой строкой или является пустой, рекомендуется, чтобы поставщик создает исключение.