一个或多个实体的验证失败。用户名已被占用?

时间:2017-03-12 10:06:36

标签: entity-framework ef-code-first asp.net-identity

我有两个表:TasksUsersApplicationUser),它们之间存在多对多的关系,我使用预定义的表用户微软身份, 当我更新现有Task并为其分配新用户时:

  var taskToUpdate = context.Tasks.Find(taskVM.Id);
        context.Entry(taskToUpdate).State = EntityState.Modified;
        taskToUpdate.Users = new List<ApplicationUser>();
        foreach (var user in taskVM._Users)
        {
            var userDB = context.Users.Find(user.Id);
            context.Entry(userDB).State = EntityState.Unchanged;
            taskToUpdate.Users.Add(user);
        }
        context.SaveChanges();

但是当调用SaveChanges时出现此错误:

  

一个或多个实体的验证失败。看到   &#39; EntityValidationErrors&#39;物业详情。

在EntityValidationErrors中:

ErrorMessage =&#34;用户名Sohaib已被占用。&#34; PropertyName用户

1 个答案:

答案 0 :(得分:0)

调用.Users.Add方法时EF假设您正在添加新实体,从而创建新用户记录并抛出异常

可能的解决方案是

var taskToUpdate = context.Tasks.Find(taskVM.Id);
taskToUpdate.Users = taskVM.Users;
context.SaveChanges();