2009-08-02 3 views
1

У меня возникла проблема с сохранением данных из-за неправильно сгенерированного имени параметра.Недопустимое имя параметра

В таблице указано поле «E-mail», а при создании оболочки класса InsertCmd использует «@ E-mail» в качестве одного из параметров. В SQL Server это незаконно и генерирует исключение.

Я охотился во всем SubSonic, чтобы изменить имя параметра просто «@ Email», но свойство ParameterName доступно только для чтения.

Я использую SubSonic 2.2 и не имею источника для его внутренней модификации.

Любые идеи?

ТИА

+0

Не могли бы вы переименовать столбец? –

+0

Переименование не опция. Я пишу приложение, которое переносит данные пользователей из MS Access в SQL. У них более 500 MS Access db. Мне нужно было бы переименовать столбец в каждой БД. УЧ. – 2009-08-02 18:05:41

ответ

2

я получил помощника моего, который использует SVN, чтобы вытащить исходный код, как и ожидалось, нашел ошибку в источнике SS.

Когда имя столбца устанавливается в классе обертке, сеттер для свойства ColumnName устанавливает свойство ParamaterName для вас, правильно используя «имяПараметра = Utility.PrefixParameter (Utility.StripNonAlphaNumeric (ColumnName), Table.Provider);» , Это удаляет любые незаконные символы, такие как дефис, в столбце E-mail.

BUT ... Свойство ParameterName НЕ используется при создании команд SQL. Вот код в SQLDataProvider.GetInsertSQL, строка 1462.

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

Я изменил это

pars.Append (col.ParameterName);

и проблема теперь сортируется.

Спасибо вам, что придумали возможные решения.

Смежные вопросы