У меня есть раздел на странице, где пользователь может изменить свое имя пользователя. Это в основном код для этого:GetRolesForUser пытается получить Роли на старом имени пользователя?
user.UserName = txtNewUserName.Text;
user.Save();
пользователь является классом в моем DBML и сохранить вызовы SubmitChanges на контексте данных.
Имя изменяется в базе данных, поэтому, когда он вызывает следующий метод, он терпит неудачу, поскольку он пытается получить пользователя со старым именем пользователя, а не тем, что находится в базе данных.
public override string[] GetRolesForUser(string username)
{
return dc.Users.Where(u => u.UserName== username)
.SingleOrDefault().Roles
.Select(r => r.RoleName).ToArray<string>();
}
Я просто попробовал это, и это не сработало. Класс, в котором вызван метод GetRolesForUser, фактически создает новый контекст данных. Я по-прежнему получаю ту же ошибку, она переводит старое имя пользователя в переменную имени пользователя. – Xaisoft
Если это решение не работает, у вас есть проблема жизненного цикла, указывающая на то, что вы пытаетесь получить значение до его фактического хранения. – citronas
жизненный цикл выглядит так: Пользователю назначено новое имя пользователя. Вызывается SubmitChanges. Вызывается GetRolesforUser, но старое имя пользователя передается. – Xaisoft