在我的应用程序中,用户可以分配角色。在此设置页面,我有以下代码:外键在创建时更新,但不在编辑时更新
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