다음을 통해 공유


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에 하나 이상의 멤버가 있을 때 예외를 throw하고 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 클래스의 Roles 메서드에 의해 DeleteRole 호출되어 구성된 ApplicationName에 대한 데이터 원본에서 지정된 역할을 삭제합니다.

데이터 원본에서 역할을 삭제하는 경우 구성된 applicationName에 대한 사용자 이름과 삭제된 역할 간의 연결도 삭제해야 합니다.

true이고 매개 변수로 식별된 역할에 하나 이상의 멤버가 roleName 있는 경우 throwOnPopulatedRoleProviderException throw하고 역할을 삭제하지 않습니다. 이 이falsethrowOnPopulatedRole 비어 있는지 여부에 관계없이 역할을 삭제합니다.

지정된 역할 이름이 없거나 가 null이거나 빈 문자열인 경우 공급자가 예외를 throw하는 것이 좋습니다.

적용 대상

추가 정보