Prevent saving changes that require the table to be re-created

J'ai créé une Base de Données dans un projet Visual Studio 2010 avec le Server Explorer mais je dois faire une modification de définition de ma nouvelle Base de Données mais je n'arrive pas à sauvegarder cette modification. Cet imbécile de SQL Server s'entête à me renvoyer un message :

Saving changes is not permitted. The changes you have made resuire the following tables to be dropped and re-created. You have either made changes to a table that can't bo re-created or enable the option Prevent saving changes that requires the table to be re-created.

Requirements : Visual Studio 2010, SQL Express, Visual Studio 2019

Saving changes is not permitted. The changes you have made resuire the following tables to be dropped and re-created. You have either made changes to a table that can't bo re-created or enable the option Prevent saving changes that requires the table to be re-created.
The changes you have made resuire the following tables to be dropped and re-created.
Et en 2019, c'est toujours valable !

Je crois que le plus idiot de ce truc c'est que le message de cette textbox n'est pas copiable pour pouvoir googooliser le plus rapidement possible.

Problème, impossible de sauver les modifications

Je modifie un clef d'index primaire :
Identity Specification :
  Is Identity : Yes
  Identity Increment : 1

Et au moment de sauvegarder mes modifications c'est la catastrophe :


Prevent saving changes that require table re-creation
Problème au moment de sauver les modifications de ma Base de Données SQL Server

Solution : décocher la case "Prevent saving changes"

Cette option se trouve dans le Menu :

Tools -> Article : Options -> Database Tools -> Table and Database Designers :
Décocher la case : Prevent saving changes that require table re-creation

Tools, Options, Database Tools
Les options de Visual Studio qui me permettent de modifier ma Base de Données SQL Server
Oui mais au moment où je cherche cette option dans mon MS Management Studio 2019 je ne la trouve plus ! Grrrr

En 2019 cette option existe encore et se trouve déplacée ici :

Tools -> Options -> Designers -> Table and Database Designers

You have either made changes to a table that can't bo re-created or enable the option Prevent saving changes that requires the table to be re-created.
You have either made changes to a table that can't bo re-created or enable the option Prevent saving changes that requires the table to be re-created.

Conclusion :

L'administration et la configuration des Bases de Données SLQ Server sont rendue difficiles par tout un tas d'options dont on ne devrait jamais avoir à se préoccuper ...

Attention : Une fois les modifications apportées à la base de données, il faut refaire les objets attachés à cette base, je pense notamment aux objets "Linq To Sql" ou "Entity Models" ...

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.