我有一个带循环的代码,它使用存储过程来填充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中是否有任何缓存行为?