2009-08-02 21 views
1

Ich habe ein Problem mit dem Speichern von Daten aufgrund eines falsch generierten Parameternamens.Ungültiger Parametername

Die Tabelle hat ein Feld "E-Mail", und wenn der Klassenwrapper generiert wird, verwendet die InsertCmd "@ E-Mail" als einen der Parameter. In SQL Server ist dies illegal und erzeugte eine Ausnahme.

Ich habe überall auf SubSonic für eine Möglichkeit gejagt, den Parameternamen einfach zu "@Email" zu ändern, aber die Eigenschaft ParameterName ist schreibgeschützt.

Ich benutze SubSonic 2.2 und habe nicht die Quelle für eine interne Modifikation.

Irgendwelche Ideen?

TIA

+0

Können Sie die Spalte umbenennen? –

+0

Umbenennen keine Option. Ich schreibe eine Anwendung, die Benutzerdaten von MS Access zu SQL migriert. Sie haben über 500 MS Access db's. Ich müsste die Spalte in jedem DB umbenennen. AUTSCH. –

Antwort

2

Ich habe einen Kumpel von mir, die SVN verwendet, den Quellcode zu ziehen, und wie erwartet, einen Fehler in der SS Quelle gefunden. „Parameter = Utility.PrefixParameter (Utility.StripNonAlphaNumeric (column), Table.Provider);“

Wenn die Spaltennamen in der Wrapper-Klasse festgelegt ist, die Setter für die Spaltenname Eigenschaft setzt die ParamaterName Immobilie für Sie richtig mit . Dadurch werden alle unzulässigen Zeichen wie der Bindestrich in meiner E-Mail-Spalte entfernt.

ABER ... Die Eigenschaft ParameterName wird nicht verwendet, wenn die SQL-Befehle erstellt werden. Hier ist der Code in SQLDataProvider.GetInsertSQL, Zeile 1462.

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

I verändert dies

pars.Append (col.ParameterName);

und das Problem ist jetzt sortiert.

Dank Ihnen, die mögliche Lösungen gefunden haben.

Verwandte Themen