"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?