好像发现了一个微软的bug
这两天碰上了一个OleDb/SqlDb Mapping中SqlDbType.Text引起的问题。
方法Void System.Data.SqlClient.SqlCommandBuilder.DeriveParameters(SqlCommand)可以为SqlCommand配置参数,但当参数是SqlDbType.Text时,配置的结果是:
Name Value Type
-sqlPrmt {System.Data.SqlClient.SqlParameter} System.Data.SqlClient.SqlParameter
DbType AnsiString System.Data.DbType
SqlDbType VarChar System.Data.SqlDbType
ParameterName @DISEASE_NAMES String
Size 2147483647 Integer
即,它的SqlDbType属性并不是SqlDbType.Text,而是SqlDbType.VarChar,而Size属性还是2147483647,即2^31-1,仍然保留了SqlDbType.Text类型的属性。这样在调用的时候,SQL Server就会报错:Not enough Buffer。
详细:http://blogs.coder.cn/athos/articles/613.aspx