«Невозможно вставить явное значение для столбца идентификаторов в таблице, когда для 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? Знаете ли вы, как мы можем исправить эту проблему?

Ответы на вопрос(9)

Ваш ответ на вопрос