【发布时间】:2013-05-10 13:01:14
【问题描述】:
在我的应用程序中,可以为用户分配角色。在此设置页面中,我有以下代码:
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);
谁能想到为什么这会在创建时正常工作但在编辑时不能正常工作?非常感谢,我非常愿意澄清任何问题。
【问题讨论】:
-
这与您在创建新用户时使用的代码相同吗?还是只是为了更新?
-
能否提供SaveUsers方法中的代码?您使用的是 EF 还是 ADO?
-
@SOfanatic 这是在我的管理员用户可以使用的快速帐户设置页面中创建和更新用户的相同代码。它适用于创建,但不适用于更新。
-
@NickChambers 我没有看到你在哪里调用你的上下文的 SaveChanges。但是好的,看看这个链接是否可以帮助你stackoverflow.com/questions/4728212/… AND stackoverflow.com/questions/4075107/…
-
就像@JhonatasKleinkauff 所说,不确定您的方法如何成功添加新用户,似乎没有在任何地方调用
context.SaveChanges()。
标签: c# asp.net sql asp.net-mvc-3