以下是我的操作代码:
[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
查询。
答案 0 :(得分:1)
最后,在以下答案的帮助下:https://stackoverflow.com/a/17055085/1124494我能够解决此问题。虽然,我仍然无法理解问题。我正在使用通用控制器来获取ApplicationDbContext
对象。我在基本控制器类中使用了这样的属性:
protected ApplicationDbContext _context { get { return new ApplicationDbContext(); } }
我在其他控制器中继承了此类。我正确地获取了数据,但无法保存。
当我在子类中声明ApplicationDbContext
并使用它们自己的_context
对象保存数据时,它起作用了。
如果任何人都可以告诉我为什么会发生这种情况,那么它将对这个问题的未来访问者大有帮助。
答案 1 :(得分:0)
我认为,如果将ApplicationDbcontext的保护更改为公开,则它可以工作, 请告诉我它是对还是错,谢谢。