«Невозможно вставить явное значение для столбца идентификаторов в таблице, когда для IDENTITY_INSERT установлено значение OFF» с помощью составного ключа
Недавно мы добавили новый «уровень» в нашу базу данных - добавили ключ «Company_ID», который должен быть выше / перед существующим полем ID Identity в таблицах по всей базе данных.
Например, если таблица имела идентификатор, а затем поля, теперь она имеет идентификатор компании, затем идентификатор, а затем поля. Идея состоит в том, что это позволяет автоматически увеличивать ID для каждого отдельного значения Company_ID, которое предоставляется функциональности (Company_ID 1 может иметь ID 1, 2, 3 и т. Д .; Company_ID 2 может иметь ID 1, 2, 3 и т. Д.).
Поле автоинкремента остается идентификатором. Пример таблицы:
[dbo].[Project](
[Company_ID] [int] NOT NULL,
[ID] [int] IDENTITY(1,1) NOT NULL,
[DescShort] [varchar](100) NULL,
[TypeLookUp_ID] [int] NULL,
[StatusLookUp_ID] [int] NULL,
[IsActive] [bit] NOT NULL,
CONSTRAINT [PK_Project] PRIMARY KEY CLUSTERED
(
[Company_ID] ASC,
[ID] ASC
)
До того, как Company_ID был введен, для выполнения CREATE мы просто заполняли поля DescShort, TypeLookUp_ID, StatusLookUp_ID и IsActive и оставляли ID таким, какой он был по умолчанию, возможно, 0.
Запись была успешно сохранена, а ID был автоматически заполнен базой данных, а затем использован для выполнения SHOW через представление и т. Д.
Однако теперь мы хотим установить для Company_ID указанное значение, оставить идентификатор и заполнить поля, как и раньше.
_db.Project.Add(newProject);
_db.SaveChanges();
Да, мы хотим указать значение Company_ID. Мы хотим, чтобы идентификатор был автоматически заполнен, как и раньше. Мы получаем сообщение об ошибке:
Невозможно вставить явное значение для столбца идентификаторов в таблице «Project», если для параметра IDENTITY_INSERT установлено значение OFF.
Это вызвано указанием Company_ID или полем ID? Знаете ли вы, как мы можем исправить эту проблему?