No se puede insertar un valor explícito para la columna de identidad en la tabla 'tabla' cuando IDENTITY_INSERT está configurado en OFF
Tengo el siguiente error cuando ejecuto el siguiente script. ¿A qué se debe el error y cómo se puede resolver?
Insert table(OperationID,OpDescription,FilterID)
values (20,'Hierachy Update',1)
Error:
Servidor: Mensaje 544, Nivel 16, Estado 1, Línea 1
No se puede insertar un valor explícito para la columna de identidad en la tabla 'tabla' cuando IDENTITY_INSERT está establecido en OFF.
Estás insertando valores para OperationId
eso es una columna de identidad.
Puede activar la inserción de identidad en la tabla de esta manera para poder especificar sus propios valores de identidad.
SET IDENTITY_INSERT Table1 ON
INSERT INTO Table1
/*Note the column list is REQUIRED here, not optional*/
(OperationID,
OpDescription,
FilterID)
VALUES (20,
'Hierachy Update',
1)
SET IDENTITY_INSERT Table1 OFF
Simplemente, si recibe este error en el servidor SQL, ejecute esta consulta.
SET IDENTITY_INSERT tableName ON
Esto funciona solo para una única tabla de base de datos,
por ejemplo, si el nombre de la tabla es, student
la consulta tendrá este aspecto:
SET IDENTITY_INSERT student ON
Si recibe este error en su aplicación web o utiliza el marco de la entidad, primero ejecute esta consulta en el servidor SQL y actualice su modelo de entidad (
.edmx file
) y cree su proyecto y este error se resolverá.
No ponga valor a OperationID porque se generará automáticamente. prueba esto:
Insert table(OpDescription,FilterID) values ('Hierachy Update',1)
Tenga mucho cuidado al configurar IDENTITY_INSERT en ON. Esta es una mala práctica a menos que la base de datos esté en modo de mantenimiento y configurada para un solo usuario. Esto afecta no sólo a su inserción, sino también a las de cualquier otra persona que intente acceder a la tabla.
¿Por qué intentas poner un valor en un campo de identidad?
En su entidad para esa tabla, agregue el DatabaseGenerated
atributo encima de la columna para la cual se establece la inserción de identidad:
Ejemplo:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TaskId { get; set; }