Student
和Teacher
是我的關係many-to-many
。新對象,但錯誤:objectstatemanager中已存在具有相同鍵的對象。 (...)
當我在數據庫中存在Student
,並且想要添加新的Teacher
時,我嘗試下面的代碼。
但行: addedTeachers.ForEach(a => dbStudent.Teacher.Add(a));
我得到錯誤
「an object with the same key already exists in the objectstatemanager. the objectstatemanager cannot track multiple objects with the same key
」。
怎麼了?
void Update(Student s)
{
using(var context = new MyEntities(connectionString))
{
context.ContextOptions.LazyLoadingEnabled = false;
var dbStudent = context.Student.Include("Teacher").Where(a => a.Id == s.Id).SingleOrDefault();
var dbTeachers = dbStudent.Teacher.ToList();
var newTeachers = s.Teacher.ToList();
var addedTeachers = newTeachers.Except(dbTeachers).ToList();
var deletedTeachers = dbTeachers.Except(newTeachers).ToList();
addedTeachers.ForEach(a => dbStudent.Teacher.Add(a));
deletedTeachers.ForEach(a => dbStudent.Teacher.Remove(a));
context.SaveChanges();
}
}
編輯
什麼奇怪東西:
之前有例外dbStudent.Teacher.Count
這條線是0。但異常後是1。當然addedTeachers.Count
也是1,但調試器不到達下一條線。
你能看看我的第二個非常類似的問題? http://stackoverflow.com/questions/12354046/add-item-and-update-relationship-in-transitional-table-in-many-to-many-database – Saint