Bonjour à tous,
Je ne goute que peu à l'exception que je rencontre en ce moment
Mon DataSet typé se remplit des données de la base à la création. Lors d'un process particulier, je veux vider l'unique table de ce DataSet pour y envoyer de nouvelles données. La seule contrainte définie sur cette table est la clé primaire, qui est composée des deux seuls champs de cette table.
Voici le code correspondant.
Ma couche de données utilise un singleton
Initialisation du DataSet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public static MigrationData Singleton { get { if (singleton == null) singleton = new MigrationData(); return singleton; } } private MigrationData() { this.Init(); }
Vidage de la table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private void Init() { dataSetMigrationDataBase = new DataSetMigrationDataBase(); //DataSetMigrationDataBaseTableAdapters.TableAdapterManager migrationDataBaseTableManager = new DataSetMigrationDataBaseTableAdapters.TableAdapterManager(); partNumbersTableAdapter = new DataSetMigrationDataBaseTableAdapters.PartNumbersTableAdapter(); partNumbersTableAdapter.Fill(dataSetMigrationDataBase.PartNumbers); }
Insertion dans la table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void ClearPartNumbersTable() { dataSetMigrationDataBase.PartNumbers.Rows.Clear(); }
Sauvegarde en base
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void InsertPartNumberCouple(string oldPartNumber, string newPartNumber) { DataSetMigrationDataBase.PartNumbersRow newDataRow = dataSetMigrationDataBase.PartNumbers.NewPartNumbersRow(); newDataRow.OldPartNumber = oldPartNumber; newDataRow.NewPartNumber = newPartNumber; dataSetMigrationDataBase.PartNumbers.Rows.Add(newDataRow); }
Mon programme, au moment de faire le vidage initial de la table, appelle donc la méthode Init. L'instruction partNumbersTableAdapter.Fill(dataSetMigrationDataBase.PartNumbers) lève alors la ConstraintException suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void SavePartNumbers() { partNumbersTableAdapter.Update(dataSetMigrationDataBase.PartNumbers); }
Je ne comprends absolument pas pourquoi, les valeurs de la table ne contenant aucun doublon... Du moins, j'imagine que SQLServer les auraient refusés !Impossible d'activer les contraintes. Une ou plusieurs lignes contiennent des valeurs qui violent les contraintes de type non null, unique ou de clé externe.
Merci d'avance pour votre aide, j'avoue ne pas bien saisir. Certainement qu'une énormité ne me saute pas encore aux yeux
Partager