Невозможно вставить явное значение для столбца идентификаторов в таблице 'table', когда для IDENTITY_INSERT установлено значение OFF - PullRequest
287 голосов
/ 26 августа 2009

У меня ниже ошибка, когда я выполняю следующий скрипт. В чем заключается ошибка и как ее можно устранить?

Insert table(OperationID,OpDescription,FilterID)
values (20,'Hierachy Update',1)

Ошибка:

Сервер: Msg 544, Уровень 16, Состояние 1, Строка 1

Невозможно вставить явное значение для столбца идентификаторов в таблице 'table', когда для IDENTITY_INSERT установлено значение OFF.

Ответы [ 15 ]

1 голос
/ 14 апреля 2019
  1. Это происходит, когда у вас есть столбец (Первичный ключ), для которого в SQL не установлено значение Is Identity, равное true, и вы не передаете его явное значение во время вставки. Он займет первую строку, затем вы не сможете вставить вторую строку, появится ошибка. Это можно исправить, добавив эту строку кода [DatabaseGenerated(DatabaseGeneratedOption.Identity)] в столбец PrimaryKey и убедитесь, что для нее задан тип данных int . Если столбец является первичным ключом и для IsIDentity установлено значение true в SQL, эта строка кода не требуется [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  2. это также происходит, когда у вас есть столбец, который не является первичным ключом, в SQL, который имеет значение Is Identity для true, и в вашем EF вы не добавили эту строку кода [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
0 голосов
/ 20 апреля 2019

Просто удалите таблицы, которые перетаскиваются в ваш файл .dbml, и снова перетащите их. Затем Очистить решение> Восстановить решение> Построить решение.

Вот что у меня сработало.

Я не создавал таблицу самостоятельно, я использовал VS и SSMS, я перешел по этой ссылке для идентификации ASP.NET: https://docs.microsoft.com/en-us/aspnet/identity/overview/getting-started/adding-aspnet-identity-to-an-empty-or-existing-web-forms-project

0 голосов
/ 23 марта 2017

Проблема, возникающая при использовании нетипизированного DBContext или DBSet, если вы используете интерфейс и реализуете метод сохранения изменений общим способом

Если это ваш случай, я предлагаю строго типизированный DBContex, например

MyDBContext.MyEntity.Add(mynewObject)

тогда .Savechanges будет работать

0 голосов
/ 23 сентября 2016

Я не уверен, для чего используется «Вставка таблицы», но если вы просто пытаетесь вставить некоторые значения, попробуйте:

Insert Into [tablename] (OpDescription,FilterID)
values ('Hierachy Update',1);

У меня было такое же сообщение об ошибке, но я думаю, что это должно работать. Идентификатор должен автоматически увеличиваться до тех пор, пока это первичный ключ.

0 голосов
/ 16 июля 2013

И если вы используете Oracle SQL Developer для подключения, не забудьте добавить / sqldev: stmt /

/ sqldev: stmt / установить параметр identity_insert TABLE на;

...