"No se puede insertar un valor explícito para la columna de identidad en la tabla cuando IDENTITY_INSERT está establecido en OFF" con clave compuesta

Recientemente hemos agregado un nuevo "nivel" a nuestra base de datos: agregamos una clave "ID_empresa" para estar por encima / antes del campo Identidad de identificación existente en las tablas de la base de datos.

Por ejemplo, si una tabla tenía ID y luego campos, ahora tiene Company_ID, luego ID y luego los campos. La idea es que esto permita que el ID aumente automáticamente para cada valor diferente de Company_ID que se proporciona a la funcionalidad (Company_ID 1 puede tener ID 1, 2, 3, etc.; Company_ID 2 puede tener ID 1, 2, 3, etc.).

El campo de incremento automático permanece como ID. Una tabla de ejemplo es:

    [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 introducir Company_ID, para realizar un CREATE, simplemente rellenamos los campos DescShort, TypeLookUp_ID, StatusLookUp_ID e IsActive, y dejamos que ID fuera lo que era por defecto, posiblemente 0.

El registro se guardó con éxito, y la base de datos rellenó automáticamente la ID, y luego se usó para realizar un SHOW a través de una Vista, y así sucesivamente.

Ahora, sin embargo, queremos establecer Company_ID en un valor específico, dejar ID y llenar los campos como antes.

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

Sí, queremos especificar el valor de Company_ID. Queremos que la ID se complete automáticamente, como antes. Recibimos el mensaje de error:

No se puede insertar un valor explícito para la columna de identidad en la tabla "Proyecto" cuando IDENTITY_INSERT está establecido en OFF

¿Esto se debe a la especificación de Company_ID o al campo ID? ¿Sabes cómo podemos rectificar este problema?

Respuestas a la pregunta(9)

Su respuesta a la pregunta