Quelle est la bonne façon d'éviter les erreurs sur INSERT et UPDATES avec un SqlDataAdapter/SqlCommandbuilder lorsque l'instruction SQL utilisée pour SELECT a une colonne calculée comme l'un des champs de retour?SqlCommandBuilder et SQL Server Computed Columns - Erreur
Je reçois l'erreur maintenant que "La colonne Amount ne peut pas être modifiée car elle est soit une colonne calculée soit le résultat d'un opérateur UNION".
MISE À JOUR: Je résolu le problème en utilisant une requête comme ceci:
SELECT *, PercentRating * 500 AS CoreValue FROM ValueListings
Et amerrissage forcé la colonne calculée. Maintenant ça marche. Comment SqlCommandBuilder réalise-t-il que PAS génère le champ CoreValue dans les instructions UPDATE et INSERT? Quelqu'un sait comment cela fonctionne en interne?
bonnes nouvelles avec votre solution, la honte de votre aide de la redoutée sélectionnez la notation des étoiles! –
Quel est le problème avec la notation select *? J'essaye de garder le SQL simple parce que ces déclarations sont incorporées dans un DSL. – BuddyJoe
Le problème avec l'utilisation de select * est que cela peut affecter les performances, en fonction du nombre d'enregistrements et de colonnes que contient cette table. Par exemple, si vous n'avez besoin que de 3 colonnes sur une table avec 8 colonnes, il est préférable d'appeler select column1, column2, column3 au lieu de select * car cela retournera beaucoup de données dont vous n'avez pas besoin. –