【问题标题】:Update and Create New Records in the Same Table在同一个表中更新和创建新记录
【发布时间】:2013-07-11 13:41:55
【问题描述】:

如何将更改应用到表中的第一条记录并将一个或多个附加记录添加到同一个表中?我收到以下异常:

ObjectStateManager 中已存在具有相同键的对象。 ObjectStateManager 无法使用相同的 key 跟踪多个对象

请参阅下面的示例代码。

var Student = db.Student.Where(d => d.StudentID == studentID);
                                        int count = 0;    
                                        if(Student != null)
                                            {
                                                foreach(var student in Student)
                                                {
                                                    if (student.Id == id)
                                                    {
                                                        foreach (var assign in assignment)
                                                        {
                                                            if (assign != null && count == 0)
                                                            {
                                                               //How can I save the changes that is made to the first record here
                                                                assign.AssignmentId = student.AssignmentID;
                                                                db.Assignment.ApplyCurrentValues(assign);
                                                            }

                                                            if (assign != null && count > 0)
                                                            {
                                                                //How can I add new records here
                                                                assign.AssignmentId = student.AssignmentID;
                                                                db.Assignment.AddObject(assign);
                                                            }
                                                            count++;
                                                        }
                                                    }


                                                }
                                            }

【问题讨论】:

  • 不确定在哪里,但您可能必须在某处添加.Attach()

标签: asp.net-mvc-3 entity-framework-5 entity-relationship


【解决方案1】:

尝试在此行之后调用 save 即

db.Assignment.ApplyCurrentValues(assign);
db.SaveChanges();

那么对于你的新条目:

var assignment = new Assignement() { AssignmentId = student.AssignmentID };
db.Assignments.Add(model);
db.SaveChanges();

【讨论】:

  • 一开始的Assignment表中已经有一个模板分配记录。它缺少可以为空的外键的 assignmentID。如果返回单个作业,则没有问题。我只是用 assginmentID 更新了分配。但是,如果返回两个或多个作业,我必须使用正确的 assignmentID 更新第一个模板记录,然后添加其余作业。 @hutchoroid,谢谢...我遇到了同样的例外。附加它也没有帮助。
猜你喜欢
  • 2013-09-25
  • 2016-05-17
  • 1970-01-01
  • 2013-12-21
  • 2021-10-23
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多