我有两个表:Tasks
和Users
(ApplicationUser
),它们之间存在多对多的关系,我使用预定义的表用户微软身份,
当我更新现有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用户
答案 0 :(得分:0)
调用.Users.Add
方法时EF假设您正在添加新实体,从而创建新用户记录并抛出异常
可能的解决方案是
var taskToUpdate = context.Tasks.Find(taskVM.Id);
taskToUpdate.Users = taskVM.Users;
context.SaveChanges();