[英]SaveChanges() in EntityFramework not saving changes. Showing “The function evaluation requires all threads to run”
以下是我的操作代碼:
[HttpPost]
public ActionResult AddCategory(Models.CategoryViewModel category)
{
try
{
if (ModelState.IsValid)
{
_context.Categories.Add(new Models.Category() { Name = category._Name });
_context.SaveChanges();
}
var categories = _context.Categories.ToList();
Models.CategoryViewModel categoryViewModel = new Models.CategoryViewModel()
{
_Category = categories.ToList(),
};
return View(categoryViewModel);
}
catch(Exception)
{
throw;
}
}
我可以成功獲取數據,但SaveChanges
無法正常工作。 我看不到catch塊中引發任何異常,並且在調試過程中出現此錯誤:
我單擊了_context.Categories.Sql
之前的線程圖標,但它僅顯示SELECT
查詢。
最后,借助以下答案: https : //stackoverflow.com/a/17055085/1124494我能夠解決此問題。 雖然,我仍然無法理解問題。 我正在使用通用控制器來獲取ApplicationDbContext
對象。 我在基本控制器類中使用了這樣的屬性:
protected ApplicationDbContext _context { get { return new ApplicationDbContext(); } }
我在其他控制器中繼承了此類。 我正確地獲取了數據,但無法保存。
當我在子類中聲明ApplicationDbContext
並使用它們自己的_context
對象保存數據時,它起作用了。
如果有人能告訴我為什么會這樣,那么它將對這個問題的未來訪問者有很大的幫助。
我認為,如果將受保護的ApplicationDbcontext更改為public可以起作用,請告訴我它的對與錯,謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.