"Não é possível inserir valor explícito para a coluna de identidade na tabela quando IDENTITY_INSERT está definido como OFF" com chave composta

Recentemente, adicionamos um novo "nível" ao nosso banco de dados - adicionamos uma chave "Company_ID" para estar acima / antes do campo Identidade de ID existente nas tabelas do banco de dados.

Por exemplo, se uma tabela tiver campos de ID e, em seguida, ela terá ID da empresa, ID e, em seguida, os campos. A ideia é que isso permita que o ID seja incrementado automaticamente para cada valor diferente de Company_ID que é fornecido para a funcionalidade (Company_ID 1 pode ter ID 1, 2, 3 etc; Company_ID 2 pode ter ID 1, 2, 3 etc.).

O campo de incremento automático permanece como ID. Uma tabela de exemplo é:

    [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
    )

Antes de o Company_ID ser introduzido, para executar um CREATE, simplesmente preenchemos os campos DescShort, TypeLookUp_ID, StatusLookUp_ID e IsActive e deixamos o ID como padrão, possivelmente 0.

O registro foi salvo com sucesso e o ID foi preenchido automaticamente pelo banco de dados e, em seguida, usado para executar uma MOSTRA por meio de uma Visualização, e assim por diante.

Agora, no entanto, queremos definir Company_ID com um valor especificado, deixar o ID e preencher os campos como antes.

    _db.Project.Add(newProject);
    _db.SaveChanges();

Sim, queremos especificar o valor Company_ID. Queremos que o ID seja preenchido automaticamente, como antes. Estamos recebendo a mensagem de erro:

Não é possível inserir um valor explícito para a coluna de identidade na tabela "Projeto" quando IDENTITY_INSERT está definido como OFF

Isso é causado pela especificação do Company_ID ou pelo campo ID? Você sabe como podemos corrigir esse problema?

questionAnswers(9)

yourAnswerToTheQuestion