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

Resuelto asked hace 15 años • 0 respuestas

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.

 avatar Aug 26 '09 18:08
Aceptado

Estás insertando valores para OperationIdeso 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 
pjp avatar Aug 26 '2009 11:08 pjp

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, studentla 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á.

Umang Patwa avatar Feb 21 '2017 10:02 Umang Patwa

No ponga valor a OperationID porque se generará automáticamente. prueba esto:

Insert table(OpDescription,FilterID) values ('Hierachy Update',1)
Wael Dalloul avatar Aug 26 '2009 11:08 Wael Dalloul

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?

HLGEM avatar Aug 26 '2009 15:08 HLGEM

En su entidad para esa tabla, agregue el DatabaseGeneratedatributo encima de la columna para la cual se establece la inserción de identidad:

Ejemplo:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TaskId { get; set; }
user902490 avatar Mar 17 '2016 19:03 user902490