IDENTITY_INSERT is set to OFF

Comment setter IDENTITY_INSERT à ON ?

Description du problème rencontré :

J'ai créé une nouvelle Database EmployeeDB pour un exemple de CRUD en WPF C#.NET utilisant un "Link To SQL Classes" mais au moment de l'exécution, j'ai une erreur : Cannot insert explicit value for identity column in table 'Employee' when IDENTITY_INSERT is set to OFF.

Est ce vraiment le problème ? Qu'elle est la solution ?

Les sources du projet Visual Studio C# sont ici :
CRUDDataGridWPF

Comment corriger l'erreur DENTITY_INSERT is set to OFF

Tentative de solution 1

Je tente de faire ce qui est préconisé par certains forums ...

Dans SQL Server Management Studio, j'attache ma base (ou Joindre)
Je créé une requette :

USE EmployeeDB;
GO
SET IDENTITY_INSERT dbo.Employee ON
GO

Et je l'exécute ...

Exécution de la requête SET IDENTITY_INSERT sur la Table de la Base de Données
Cela ne fonctionne pas ! La même erreur est toujours là !

Comme j'ai modifié la table Enployee, je prend la précaution de refaire mon "Link To SQL Classes" en Drag and Droppant ma table depuis le Server Explorer dans mon objet .dbml :

En drag and droppant ma table je recréé le Employee.dbml
Je n'ai plus l'erreur ...
Mais lorsque j'exécute à nouveau mon exemple, les données ne sont pas INSERTées dans la BD !

Je regarde alors d'un peu plus près le projet de référence et je vois dans l'App.config :

            connectionString="Data Source=B314LTRV\SQLEXPRESS;Initial Catalog=EmployeeDB;Integrated Security=True"

Mais d'où vient cette source ? B314LTRV !?

Tentative de solution 2

Je supprime l'objet EmployeeDB.dbml et je refais l'ajout d'item "Link To SQL Classes" en prenant soins de supprimer auparavant le fichier :
\\CRUDDataGridWPF\CRUDDataGridWPF\Properties\Settings.settings

Et de nettoyer le fichier :
\\CRUDDataGridWPF\CRUDDataGridWPF\App.config

Dernier point :
La BD EmployeeDB.mdf qui se trouve dans  le répertoire principal de mon projet possède l'attribut : "Copy to ouput directory" à Copy always cela peut engendrer des petits soucis, je le mets à "Copy if newer" ...

Conclusion

Le maniement des Base de Données SQL Server dans les projets .NET est souvent une très grosse source de problèmes. Il est difficile de réaliser des projets véritablement portables et réinstallables facilement sur une nouvelle plateforme.




Aucun commentaire:

Enregistrer un commentaire