J'ai une table qui utilise trois colonnes comme clé composite.Modification de la valeur de clé composite à l'aide de LINQ
L'une de ces valeurs de colonne est utilisée comme suiveur de séquence pour les enregistrements associés ordonnés. Lorsque j'insère un nouvel enregistrement, je dois incrémenter les numéros de séquence pour les enregistrements liés qui viennent après le nouvel enregistrement.
Je peux le faire directement dans SQL Server Management Studio, mais lorsque je tente cela dans LINQ-je obtenir l'erreur suivante:
Value of member 'Sequence' of an object of type 'TableName' changed. A member defining the identity of the object cannot be changed. Consider adding a new object with new identity and deleting the existing one instead.
Quelqu'un peut-il suggérer un moyen de contourner cette limitation?
(Ajout d'un nouveau record (tel que suggéré par le message d'erreur) n'est pas vraiment une option que la table avec la clé composite a une relation avec une autre table.)
J'ai rencontré le même problème avec une base de données héritée. Bien sûr, c'est un mauvais design, mais on obtient ce qu'on nous donne parfois. J'ai utilisé la solution ci-dessous, créant un nouveau PK et restructurant la DB. La chose étrange est, la base de données elle-même met à jour bien, c'est LINQ qui jette un ajustement. – IanStallings