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