Эффективный способ создать большое количество членства через Membership.CreateUser? - PullRequest
1 голос
/ 26 мая 2011

Я просто создаю программу управления членством, эта программа может создавать пользователя по одному и импортировать данные из текстового файла.Когда я импортирую данные из текстового файла, он может создать около 30 пользователей до истечения времени ожидания, после отладки на каждый вызов CreateUser уходит около 1 секунды.

Я хочу знать, как я могу улучшить производительность при создании большихномер пользователя aspnet.

1 Ответ

1 голос
/ 26 мая 2011

Решение1:

  1. Получить все данные из пользовательской таблицы в набор данных ds в таблице "Пользователь"
  2. Получить все данные из таблицы элементов в таблицу "Member" в одном наборе данных ds
  3. Создать связь между двумя таблицами в поле ИД пользователя
  4. Запустить цикл в каждой строке таблицы User
  5. Для каждого пользователя вызовите Membership.CreateUser с именем пользователя и паролем в качестве параметров
  6. Получить все дочерние строки для текущего пользователя DataRow.GetChildRows
  7. Для каждого возвращенного дочернего элемента вызовите Roles.AddUserToRole с параметрами username и rolename в качестве параметров (добавляйте, только если роль активна)
    Взято с здесь .

Решение 2:

  1. Скачать Редактор членства Питера Келлера
  2. Создайте электронную таблицу со следующими столбцами: имя пользователя, пароль и адрес электронной почты.
    Импортируйте этот файл Excel в эту базу данных в виде таблицы: yourUsers $
  3. Создайте приложение Winforms, добавьте кнопку, чтобы сформировать и вставить этот код в событие клика:

    protected void batchInsertButton_Click(object sender, EventArgs e)
    {
    string strConn = ConfigurationManager.ConnectionStrings["1ConnectionString"].ConnectionString;
    string strSQL = "SELECT * FROM yourUsers$";
    
    SqlConnection myConnection = new SqlConnection(strConn); 
    
    myConnection.Open();
    
    SqlCommand myCommand = new SqlCommand(strSQL,myConnection);
    
    SqlDataReader myReader; 
    
    
    myReader = myCommand.ExecuteReader(); 
        while (myReader.Read()) {
    
            ObjectDataSourceMembershipUser.InsertParameters["UserName"].DefaultValue = myReader["UserName"].ToString();//TextBoxUserName.Text; ;
            ObjectDataSourceMembershipUser.InsertParameters["password"].DefaultValue = myReader["password"].ToString();//TextBoxPassword.Text;
            ObjectDataSourceMembershipUser.InsertParameters["passwordQuestion"].DefaultValue ="your qestion";//TextBoxPasswordQuestion.Text;
            ObjectDataSourceMembershipUser.InsertParameters["passwordAnswer"].DefaultValue = "your answer";//TextBoxPasswordAnswer.Text;
            ObjectDataSourceMembershipUser.InsertParameters["email"].DefaultValue = myReader["email"].ToString();//TextBoxEmail.Text;
            ObjectDataSourceMembershipUser.InsertParameters["isApproved"].DefaultValue = "true";//CheckboxApproval.Checked == true ? "true" : "false";
    
    ObjectDataSourceMembershipUser.Insert();
    
    
    //hard code this user role
    Roles.AddUserToRole(myReader["UserName"].ToString(), "NormalUser"); 
    
            } 
    myConnection.Close();
    
    GridViewMemberUser.DataBind();
    GridViewRole.DataBind();
    }  
    

Взято из здесь .

...