Question

I have a test that requires all users in my SimpleMembershipProvider UserProfile table to be deleted. I'd like to do this in my SeedMembership() method (below). Something like membership.DeleteAllUsers. Any idea how this can be done?

private int SeedMembership()
        {

            if (!WebMatrix.WebData.WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("TestConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }


            var roles = (SimpleRoleProvider)Roles.Provider;
            var membership = (SimpleMembershipProvider)Membership.Provider;

            if (!roles.RoleExists("Admin"))
            {
                roles.CreateRole("Admin");
            }
            if (!roles.RoleExists("User"))
            {
                roles.CreateRole("User");
            }

            // Somehow delete all users here

            if (membership.GetUser("user", false) == null)
            {
                membership.CreateUserAndAccount("user", "covert");
            }
            if (!roles.GetRolesForUser("user").Contains("Admin"))
            {
                roles.AddUsersToRoles(new[] { "user" }, new[] { "admin" });
            }

            return membership.GetUserId("user");

        }
Was it helpful?

Solution 3

I have had to implement similar functionality on several projects, the simplest way I have found to do it is this (from memory, but I think this is going to work):

var dbUsernames = context.Database.SqlQuery<string>("SELECT UserName FROM UserProfile");
foreach (string dbUsername in dbUsernames)
{
    string[] userRoles = Roles.GetRolesForUser(dbUsername);
    if (userRoles != null && userRoles.Length > 0)
    {
        Roles.RemoveUserFromRoles(dbUsername, userRoles); 
    }
    int userId = context.Database.SqlQuery<int>("SELECT UserId FROM UserProfile WHERE UserName = {0}", dbUsername).First();
    // HERE: Delete any other dependent rows in other tables that use UserId, and have referential integrity
    // Now tear down any final bits and delete the user, for example: 
    Membership.DeleteUser(dbUsername, true);
    context.Database.ExecuteSqlCommand(
        "DELETE FROM webpages_Membership WHERE UserId = {0}", userId);
}

OTHER TIPS

go through this link

http://blogs.thesitedoctor.co.uk/tim/Trackback.aspx?guid=b16a67b9-4c34-4566-a689-088e6c087405

or simply do this...

foreach (MembershipUser u in Membership.GetAllUsers())
{
 Membership.DeleteUser(u.UserName, true);
}

In SQL Server and MySQL you can run:

TRUNCATE my_aspnet_users
TRUNCATE my_aspnet_membership
TRUNCATE my_aspnet_profiles
TRUNCATE my_aspnet_roles

well if you want to delete all members , delete the table and recreate it ,its more like a trick not an answer . Or use entity framework its easier .

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top