Пару лет назад я использую DeriveParameters с .NET 1.1 и 2.0, и каждый раз работал как чары.
Сейчас я работаю над своим первым заданием с .NET 3.5, и только что обнаружил и ужасный сюрприз: DeriveParameters создает все параметры с помощью SqlDbType «Variant», а не с собственными SqlDbTypes. Это создает исключение SqlException при попытке выполнить SP с числовыми параметрами, поскольку SQL Server 2005 говорит, что sql-вариантные типы нельзя неявно преобразовать в значения типа int (или smallint, или numeric).
Я только что протестировал один и тот же код с .NET CF 2.0 и SQL Server 2000 и работал, как и ожидалось, назначая правильный SqlDbType для каждого параметра.
Я тестировал приложения .NET 2.0 на базе данных SQL Server 2005, поэтому проблема не связана с SQL Server, поэтому она должна быть связана с .NET 3.5
Есть идеи?