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 ...
Je créé une requette :
USE EmployeeDB;
GO
SET IDENTITY_INSERT dbo.Employee ON
GO
Exécution de la requête SET IDENTITY_INSERT sur la Table de la Base de Données |
En drag and droppant ma table je recréé le Employee.dbml |
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