簡體   English   中英

EntityFramework中的SaveChanges()不保存更改。 顯示“函數評估要求所有線程都運行”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM