0

我有一个带有循环的代码,它使用存储过程来填充 DataTable。存储过程生成的行集总是不同的,因为它是在每次调用时更新的计数器。

请注意,对存储过程的每次调用都使用完全相同的参数完成。

我已经在 SQL Manager Studio 上对其进行了测试,并且运行良好。在 .NET 3.5 中它也可以正常工作。

for (int i = 0; i < total; i++)
   {
       SqlCommand cmd= new SqlCommand("MyStoredProcedure", cn);
       cmd.CommandType = CommandType.StoredProcedure;
       cmd.Parameters.AddWithValue("@param1", Convert.ToInt32(Textbox1.Text));

       string AlwaysDifferentCounter = "";
       MyDatatable.Clear();
       MyDatatable = cmd.Fill();


       AlwaysDifferentCounter = MyDatatable.Rows[0]["Counter"].ToString();
       //AlwaysDifferentCounter value always is the same 

   }

迁移到 Framework 4.5 后,它无法正常工作,因为它正在使用相同的行集填充数据表。

我试图从输出参数中获取计数器,它工作正常,但在行集中它仍然过时。

       AlwaysDifferentCounter = MyDatatable.Parameters["@Counter"].Value.ToString();
       //AlwaysDifferentCounter now it has a different value on each call

为什么会这样?Framework 4.5 中是否有任何缓存行为?

4

0 回答 0