我想我根本没有得到这个上下文的东西......看看控制器的 Create 操作中的这个片段:
if (ModelState.IsValid)
{
Individual target = db.Individuals.Where(i => i.ID == Target.ID).First();
target.LocationId = Destination.ID;
db.Entry(target).State = EntityState.Modified;
db.SaveChanges();
if (newPair != null)
{
db.Pairs.Add(newPair);
db.SaveChanges();
}
}
第一个SaveChanges();
工作正常,记录在数据库中更新。但是.Add()
第二个之前的行SaveChanges();
会导致错误An entity object cannot be referenced by multiple instances of IEntityChangeTracker.
newPair
Pair
是上面几行创建的类的新实例,并且db
是在控制器级别创建的我的数据库上下文的实例,如下所示:
public class MoveController : Controller
{
private ShepherdContext db = new ShepherdContext();
......
这里发生了什么?