SaveChanges () в EntityFramework не сохраняет изменения.Показано "Оценка функции требует запуска всех потоков" - PullRequest
0 голосов
/ 12 апреля 2019

Мой код действия:

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

1 голос
/ 13 апреля 2019

Наконец, с помощью этого ответа: https://stackoverflow.com/a/17055085/1124494 Я смог решить эту проблему.Хотя я все еще не могу понять проблему.Я использовал общий контроллер для получения объекта ApplicationDbContext.Я использовал такое свойство в базовом классе контроллеров:

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

Я наследовал этот класс в других контроллерах.Я правильно получал данные, но не смог их сохранить.

Когда я объявил ApplicationDbContext в дочерних классах и использовал их собственный объект _context для сохранения данных, это сработало.

Если кто-нибудь скажет мне, почему это произошло, то это очень поможет будущим посетителям этого вопроса.

0 голосов
/ 14 апреля 2019

Я думаю, что если вы измените защищенный на publicDbcontext, он может работать, пожалуйста, скажите мне, если это правильно или неправильно, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...