Первичный ключ уже существует при сохранении новой записи с использованием EF6 - PullRequest
0 голосов
/ 21 июня 2019

Я использую эту логику в течение месяца, и она недавно перестала работать.

var tool = new Tool() { ToolNumber = toolNumber.Trim(), Description = description.Trim() };
context.AddToTools(tool);
context.SaveChanges();

AddToTools выглядит так:

    public void AddToTools(Tool tool)
    {
        base.AddObject("Tools", tool);
    }

Я получаю сообщение об ошибке в context.SaveChanges ();

System.Data.Entity.Core.UpdateException HResult = 0x80131501 Сообщение = Произошла ошибка при обновлении записей. Смотрите подробности во внутреннем исключении.

Внутреннее исключение:

{"Нарушение ограничения PRIMARY KEY 'PK_Tool'. Невозможно вставить повторяющийся ключ в объект 'dbo.Tool'. Значение дублирующегося ключа равно (0). \ R \ nОтношение завершено."}

Когда я проверяю значение, значение tool.ID равно 0, и в таблице уже есть идентификатор 0, поэтому исключение является правильным.

Похоже, какое-то обновление, обновление ОС или обновление SqlServer или что-то сломало его.

Почему моя вставка в таблицу не работает?

1 Ответ

0 голосов
/ 22 июня 2019

На @Bosco выше:

"Либо первичный ключ больше не является инкрементным, так как во внутреннем исключении указан повторяющийся ключ, равный 0. Вам нужно установить ОК в автоматическое приращение"

Каким-то образом свойство Identity было изменено на no в определении таблицы.Поменял на да и все хорошо.

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