在我的應用程序中,用戶可以分配角色。在此設置頁面,我有以下代碼:外鍵在創建時更新,但不在編輯時更新
foreach (string userRole in roleArray)
{
OrganizationRole orgRole = signedUpOrg.Roles.FirstOrDefault(target => target.Name == userRole && target.OrganizationId == signedUpOrg.OrganizationId);
if (orgRole != null)
{
OrganizationUser_OrganizationRole existingUserRole = orgRole.OrganizationUser_OrganizationRole.FirstOrDefault(target => target.Organization_User.User.UserId == orgUser.User.UserId &&
target.OrganizationRole.Name == userRole &&
target.OrganizationRole.OrganizationId == signedUpOrg.OrganizationId);
if (existingUserRole == null || orgUser.User.UserId == 0) // new user role to new users or existing users with new roles
{
orgRole.OrganizationUser_OrganizationRole.Add(new OrganizationUser_OrganizationRole
{
Organization_User = orgUser,
OrganizationRole = orgRole
});
}
}
}
有了這個,我們可以通過循環將被分配,並將其保存在數據庫中的角色。這對創建用戶及其角色非常合適,但在編輯時不會發生變化。代碼似乎在正確的數據(角色等)的關鍵點被擊中,但沒有反映在數據庫或前端。
此代碼是在一類稱爲CommonUtilities的方法稱爲SaveUsers,被稱爲與下面的代碼的AdministrationController:
CommonUtilities.SaveUsers(viewModel);
任何人都可能想到的任何理由,爲什麼這會正常的工作創造但不是在編輯時?非常感謝,我會很樂意澄清任何問題。
這與創建新用戶時使用的代碼是否相同?或者這只是爲了更新? – SOfanatic 2013-05-10 13:16:09
你能提供SaveUsers方法中的代碼嗎?您正在使用EF還是ADO? – 2013-05-10 13:16:54
@SOfanatic這是在我的管理員用戶可以使用的「快速帳戶設置」頁面中創建和更新用戶的相同代碼。它適用於創建,但不適用於更新。 – 2013-05-10 13:21:10