MVC & SQL: не удается вставить значение NULL в столбец после миграции в новую базу данных

Я пытаюсь вставить значения в таблицу через веб-страницу MVC. При запуске веб-страницы из localDB, созданного Visual Studio эта ошибка не возникает. Так как я мигрировал в удаленную базу данных, я теперь получаю эту ошибку.

Не удается вставить значение NULL в столбец ‘DRTReviewerId’, table ‘ FC.Developer_Schema.Столбец DRTReviewers; не допускает значения null. Ошибка вставки.
Заявление было прекращено.

Вот оскорбительный кусок кода:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "DRTReviewerId,Name")] DRTReviewer dRTReviewer)
    {
        if (ModelState.IsValid)
        {
            db.DRTReviewers.Add(dRTReviewer);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(dRTReviewer);
    }

Значение DRTReviewerId должно быть int, генерируемым кодом, но так как я переключил базы данных, это больше не происходит. Что могло вызвать это изменение?

Код был полностью сгенерирован с помощью entity framework. Мои знания MVC в лучшем случае новичок.

2 ответа

  1. Я бы завернул db.SaveChanges() в try catch для просмотра подробной информации об ошибке:

    try{
           db.SaveChanges();
    }
    catch (DbEntityValidationException vex)
    {
           // Write to log file if you have logging support 
           Debug.WriteLine(HandleDbEntityValidationException(vex));
           throw;
    }
    catch (DbUpdateException dbu)
    {
           // Write to log if you have logging support
           Debug.WriteLine( HandleDbUpdateException(dbu));
           throw;
    }
    
  2. Таблица в удаленной базе данных имеет либо первичный ключ, либо уникальный ключ, созданный для столбца «DRTReviewerId». Поэтому он не принимает нулей. Обновите схему таблицы в удаленной БД.

    Чтобы сделать автоинкремент первичного ключа, необходимо задать для параметра Identity Specification — >Is Identity значение true и Identity Increment значение 1(в свойствах столбца DRTReviewerId).

    Введите описание изображения здесь