Я рад, что мой старый ответ был полезен для вас. Я полагаю, у вас есть проблемы возле линии
// TODO: Extend to other data types
В коде, который я включил в ответ, я показал, что propertyInfo.PropertyType.FullName
содержит информацию о типе данных свойства объекта. В коде я использовал только два типа: строковое и 32-битное целое число. В случае 32-разрядных целых чисел я сделал соответствующий анализ данных относительно Int32.Parse
:
String.Compare (propertyInfo.PropertyType.FullName,
"System.Int32", StringComparison.Ordinal) == 0 ?
new ObjectParameter ("p" + iParam, Int32.Parse(rule.data)
Вы должны заменить оператор "?:" На case
, где вы проверяете propertyInfo.PropertyType.FullName
для большего количества типов данных. Например, в случае smallint
типа SQL вы должны использовать System.Int16
, в случае tinyint
это должно быть System.Byte
, тип данных sbyte
SQL соответствует System.SByte
и так далее. Если вы используете в качестве второго параметра ObjectParameter
правильный тип данных, все должно работать правильно