嘿我尝试从我的身份用户那里持久保存更新的字段:
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;
}