我已经创建了一个页面asp.net MVC用于插入记录到数据库,我在这里给出一个预览按钮来查看数据如何在客户端看起来之前保存它。我正在使用会话将模型传递到预览页面。在预览页面上,我创建了一个按钮,可以将模型保存到数据库的会话中,但会抛出异常“IEntityChangeTracker的多个实例不能引用实体对象”。 我正在使用相同的dbContext。我尝试了许多用户提供的解决方案,但他们不适合我。我附上了引发异常的代码部分。请看我做错了什么。创建:一个实体对象不能被IEntityChangeTracker的多个实例引用
这里就是我节省纪录
var model = Session[Constants.SessionVariables.ProjectModelForPreview] as Project;
if (create != null)
{
if (model.Id == 0)
{
if (model.IsFeatured)
{
foreach (var item in dbContext.Projects.Where(p => p.IsFeatured == true))
{
item.IsFeatured = false;
}
dbContext.SaveChanges();
}
dbContext.Entry(model).State = EntityState.Unchanged;
dbContext.SaveChanges();
TempData["SuccessMessage"] = "Project created successfully.";
return RedirectToAction("Index");
}
}
您没有使用相同的背景下...告诉我们更多code.how你在下一个请求中获得相同的上下文吗? –
我正在使用基础控制器,我已经声明了上下文 –
因此,第一次创建记录并将它保存在会话中时,第二次尝试将它附加到不同的上下文中,这就是为什么您可能会遇到错误。如果我不想错过任何你有更大的问题,请不要在会话中保存跟踪的实体 –