我首先使用代码,而且流畅的api这是我的模型
public Admin()
{
this.course = new HashSet<Courses>();
}
[Key]
public int ID { get; set; }
public string LoginName { get; set; }
public virtual ICollection<Courses> course { get; set; }
}
public Courses()
{
this.admin = new HashSet<Admin>();
}
[Key]
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Admin> admin { get; set; }
}
这是流利的api
modelBuilder.Entity<Admin>()
.HasMany(e => e.course)
.WithMany(e => e.admin);
这是我的控制器,我从cshml
获取了该路径 public ActionResult Admins( Admin rec, IList<int> CourseId)
{
foreach (var item in CourseId)
{
var cr = new Courses();
cr.ID = item;
rec.course.Add(cr);
}
db.Admins.Add(rec);
db.SaveChanges();
当我尝试保存db.SaveChanges()
时,它会给我错误任何人都可以告诉我这里有什么问题吗?
错误消息
一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性
答案 0 :(得分:2)
问题是EF假设您添加到Courses
的{{1}}个实例是新的。您需要让EF使用Admin.course
方法或DbSet<T>.Attach
属性将其视为已存在:
DbEntityEntry.State