2009-08-02 16 views
1

Je rencontre un problème lors de la sauvegarde des données en raison d'un nom de paramètre incorrect.Non valide Nom du paramètre

La table possède un champ "E-mail" et lorsque l'encapsuleur de classes est généré, InsertCmd utilise "@ E-mail" comme l'un des paramètres. Dans SQL Server, ceci est illégal et a généré une exception.

J'ai recherché partout dans SubSonic pour modifier le nom du paramètre à simplement "@Email" mais la propriété ParameterName est en lecture seule. J'utilise SubSonic 2.2 et je n'ai pas la source pour effectuer une modification interne.

Des idées?

TIA

+0

Pourriez-vous renommer la colonne? –

+0

Renommer pas une option. J'écris une application qui migre des données d'utilisateurs de MS Access vers SQL. Ils ont plus de 500 MS Access DB. Je devrais renommer la colonne dans chaque DB. AIE. –

Répondre

2

j'ai eu un compagnon du mien qui utilise SVN pour tirer le code source, et comme prévu, a trouvé un bogue dans la source SS.

Lorsque le nom de colonne est dans l'emballage de classe, le poseur de la propriété ColumnName définit la propriété ParamaterName pour vous en utilisant correctement « parameterName = Utility.PrefixParameter (Utility.StripNonAlphaNumeric (columnName), Table.Provider); » . Cela supprime tous les caractères illégaux comme le trait d'union dans ma colonne E-mail. MAIS ... La propriété NomParamètre N'EST PAS utilisée lors de la création des commandes SQL. Voici le code dans SQLDataProvider.GetInsertSQL, ligne 1462.

pars.Append (Utility.PrefixParameter (colName, this));

j'ai changé à ce

pars.Append (col.ParameterName);

et le problème est maintenant trié.

Merci à vous qui avez trouvé des solutions possibles.

Questions connexes