Неверное имя параметра - PullRequest
1 голос
/ 02 августа 2009

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

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

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

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

Есть идеи?

1011 * ТИА *

Ответы [ 2 ]

2 голосов
/ 02 августа 2009

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

Когда имя столбца задано в оболочке класса, установщик свойства ColumnName правильно устанавливает свойство ParamaterName, используя "parameterName = Utility.PrefixParameter (Utility.StripNonAlphaNumeric (columnName), Table.Provider);". Это удалит все недопустимые символы, такие как дефис в моем столбце электронной почты.

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

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

Я изменил это на

pars.Append (col.ParameterName);

и проблема теперь решена.

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

1 голос
/ 02 августа 2009

Вы можете изменить шаблоны, если не можете изменить имя столбца. См. Этот пост в блоге для деталей о том, как:

http://johnnycoder.com/blog/2008/06/09/custom-templates-with-subsonic/

...