从Identity用户更新自定义字段

时间:2017-06-05 16:04:21

标签: c# asp.net-mvc asp.net-web-api asp.net-identity

嘿我尝试从我的身份用户那里持久保存更新的字段:

 var storage = new UserStore<ApplicationUser>(new SpomunicateContext());
 var manager = new Microsoft.AspNet.Identity.UserManager<ApplicationUser>(storage);
 await manager.UpdateAsync(user);

这不起作用,因为我收到此错误:

  

“附加'SpommunicateWebAPI.Models.ApplicationUser'类型的实体失败,因为同一类型的另一个实体已经具有相同的主键值。当使用'Attach'方法或将实体的状态设置为如果图中的任何实体具有冲突的键值,则“未更改”或“已修改”。这可能是因为某些实体是新的并且尚未收到数据库生成的键值。在这种情况下使用“添加”方法或“已添加” '实体状态跟踪图表,然后根据需要将非新实体的状态设置为'未更改'或'已修改'。“,

我不知道发生了什么......没有像Application User这样的实体。 我只上了这堂课:

   public class ApplicationUser : IdentityUser
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here

        return userIdentity;
    }


    public virtual ICollection<Function> Functions { get; set; }
    public virtual ICollection<Participation> Participations { get; set; }
    public virtual ICollection<Team> Teams { get; set; }
    public string Firstname { get; set; }
    public string Lastname { get; set; }
    public string Mobile { get; set; }
    public DateTime Birthdate { get; set; }
}

}

那可能是问题吗? 在owin之前,我有一个具有相同字段的实体人员,但我删除了我的Db并删除了实体,因此我认为这不是问题。

修改 我从这里得到了我的用户:

public static ApplicationUser GetUserByUsername(string username)
    {
            return HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindByNameAsync(username).Result;
    }

0 个答案:

没有答案