我在頁面上有一個部分,用戶可以更改他們的用戶名。這是基本的代碼爲: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 2010-03-24 23:11:05
如果此解決方案無法正常工作,那麼您的生命週期問題表明您正在嘗試在實際存儲該值之前獲取該值。 – citronas 2010-03-24 23:42:38
生命週期就像這樣: 用戶被分配一個新的用戶名。 SubmitChanges被調用。 GetRolesforUser被調用,但舊用戶名被傳入。 – Xaisoft 2010-03-25 00:12:45