【发布时间】:2015-06-10 02:38:41
【问题描述】:
我们不能将 Owin 和 Entity framework 7 一起添加。当我们这样做时,Microsoft.AspNet.Identity.core 2.0.0.0 和 Microsoft.AspNet.Identity 3.0.0 Beta1 之间将存在歧义
因此我无法在我的应用程序中实现角色提供程序来管理用户角色。
在遇到这个问题后,我删除了 Owin 引用并使用创建了 UserManager Microsoft.AspNet.Identity 3.0.0 和 EF 7 但 UserManager.AddToRoleAsync(user, roleName) 总是抛出如下异常:-
InvalidOperationException:无法跟踪实体类型“Mozaics.DAL.Models.ApplicationUser”的实例,因为另一个 已在跟踪具有相同密钥的此类实例。为了 新实体考虑使用 IIdentityGenerator 生成唯一的 关键值。
代码 sn-p 是这样的。
public async Task<ActionResult> RoleAddToUser(string UserName, string RoleName)
{
var user = context.Users.Where(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
var result = await UserManager.AddToRoleAsync(user, RoleName );
ViewBag.ResultMessage = "Role created successfully !";
var list = context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList();
ViewBag.Roles = list;
return View("ManageUserRoles");
}
【问题讨论】:
-
在 Microsoft.AspNet.Identity.Core 库中的方法是这样的 UserManager.AddRoleToUserAsync(User.Id, RoleName)
-
您能否向我们提供您的
project.json以及项目属性中的运行时和dnvm list的输出。谢谢
标签: c# asp.net-core asp.net-core-mvc entity-framework-core