我已經創建了一個頁面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你在下一個請求中獲得相同的上下文嗎? –
我正在使用基礎控制器,我已經聲明瞭上下文 –
因此,第一次創建記錄並將它保存在會話中時,第二次嘗試將它附加到不同的上下文中,這就是爲什麼您可能會遇到錯誤。如果我不想錯過任何你有更大的問題,請不要在會話中保存跟蹤的實體 –