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