EntityFramework中的SaveChanges()不保存更改。显示“函数求值要求所有线程都运行”

时间:2019-04-12 07:49:48

标签: c# .net asp.net-mvc entity-framework ef-migrations

以下是我的操作代码:

[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块中引发任何异常,并且在调试过程中出现此错误: enter image description here

我单击了_context.Categories.Sql之前的线程图标,但它仅显示一个SELECT查询。

2 个答案:

答案 0 :(得分:1)

最后,在以下答案的帮助下:https://stackoverflow.com/a/17055085/1124494我能够解决此问题。虽然,我仍然无法理解问题。我正在使用通用控制器来获取ApplicationDbContext对象。我在基本控制器类中使用了这样的属性:

protected ApplicationDbContext _context { get { return new ApplicationDbContext(); } }

我在其他控制器中继承了此类。我正确地获取了数据,但无法保存。

当我在子类中声明ApplicationDbContext并使用它们自己的_context对象保存数据时,它起作用了。

如果任何人都可以告诉我为什么会发生这种情况,那么它将对这个问题的未来访问者大有帮助。

答案 1 :(得分:0)

我认为,如果将ApplicationDbcontext的保护更改为公开,则它可以工作, 请告诉我它是对还是错,谢谢。