J'ai une table qui ressemble à ce qui suit:Linq2SQL traiter avec insertions/suppressions sur la table avec des contraintes uniques
TABLE Foo
{
Guid Id [PK],
int A [FK],
int B [FK],
int C [FK],
}
Et contrainte unique sur A, B et C.
dire maintenant, par exemple, vous insérez une ligne avec un nouveau PK avec A = 1, B = 1, C = 1.
SubmitChanges()
, tous heureux.
Maintenant vous éditez la table.
Vous supprimer l'entrée précédente, et insérer une ligne avec un fresk PK avec A = 1, B = 1, C = 1.
SubmitChanges()
BOOM! Exception SQL de contrainte de clé unique. D'après ce que je peux voir, il essaie d'insérer d'abord le nouvel enregistrement, puis essaie de supprimer le précédent. Je peux même comprendre qu'il n'est pas possible de déterminer l'ordre dans lequel cela doit se produire.
Mais que puis-je faire à ce sujet? Est-ce que faire de ces 3 champs un PK composite (et retirer l'ancien) serait une meilleure solution ou ne fonctionnera-t-il pas? Pour l'instant, la 'solution' consiste à supprimer les contraintes uniques de la base de données (mais je préfère ne pas le faire).
Malheureusement pas si facile. La liste est maintenue via une BindingList, obtenue à partir d'un EntitySet lié à un DataGridView. – leppie