我一向都是用开 SqlCommandBuilder.DeriveParameters 的。
但是那个方法有一个BUG。这个BUG导致该方法无法处理关联了SqlTransaction的SqlCommand
具体原因是DeriveParameters是创建一个新的SqlCommand来执行sp_procedure_params_rowset的。
但是临时的SqlCommand没有设置SqlTransaction,这样就直接导致错误。
下面是根据SqlCommandBuilder.DeriveParameters的实现复制出来的一个可用的版本:
(今天晚上回去看看 DotNet2.0 修正了这个问题没有。。)