Ответ 1
Ссылка cptScarlet была хорошей, однако я презираю использование хранимых процедур, если мне это не нужно, и я предпочитаю Entity Framework, когда это возможно. Вот что я сделал, чтобы изменить имя пользователя, используя EF 4.0 и .NET 4.0:
- Проект правой кнопки мыши → Добавить новый элемент → Модель данных сущности ADO.NET
- Дайте ему правильное имя, я выбрал "MembershipModel.edmx" и нажмите "Добавить"
- Выберите "Создать из базы данных" и нажмите "Далее"
- Добавьте подключение к базе данных aspnetdb (база данных членства ASP.NET)
- Дайте ему правильное имя, я выбрал "MembershipEntities"
- Нажмите "Далее"
- Сверлить в таблицы и выбрать aspnet_Users
- Измените пространство имен модели на MemberhipModel
- Нажмите "Готово"
Теперь вы можете добавить код для создания контекста объекта EF и изменить базу данных:
public void ChangeUserName(string currentUserName, string newUserName)
{
using (var context = new MembershipEntities())
{
// Get the membership record from the database
var currentUserNameLowered = currentUserName.ToLower();
var membershipUser = context.aspnet_Users
.Where(u => u.LoweredUserName == currentUserNameLowered)
.FirstOrDefault();
if (membershipUser != null)
{
// Ensure that the new user name is not already being used
string newUserNameLowered = newUserName.ToLower();
if (!context.aspnet_Users.Any(u => u.LoweredUserName == newUserNameLowered))
{
membershipUser.UserName = newUserName;
membershipUser.LoweredUserName = newUserNameLowered;
context.SaveChanges();
}
}
}
}
Примечание. Я не учитывал идентификатор приложения в своем коде. Обычно я использую только одно приложение, использующее базу данных членства ASP.NET, поэтому, если у вас несколько приложений, вам нужно учесть это.