一時テーブルを作成するときに、一時テーブルがすでに存在することを示すエラーメッセージが表示されます。一時テーブルはセッション固有のものなので、接続が正しく終了していないようです。私は、使用しているステートメントで持っているreturn文と何か関係があると思います。returnステートメントは、usingステートメントがデータベースへの接続を閉じるのを防ぐことができますか?
私は、次のコードを持っている:私は、同じ名前を持つ一時テーブルを作成するために、いくつかの場所で、コードのこの種を使用
using (IDbConnection connection = dbConnectionHandler.CreateConnection())
{
connection.Open();
CreateATempTable();
PopulateTempTable();
DataSet ds = CallStoredProcThatUsesTempTable();
return ds;
}
を。
残念ながら、次のエラーが表示されます。There is already an object named '#MyTempTable' in the database
今、私は一時テーブルがセッションに固有であることを知っています。セッションが閉じられると、それは消えるはずです。
私はこれを引き起こす可能性があると考えている三つのこと...私はconnection.Closeを呼び出す必要が
- があります()私は私のusingステートメント
- I外にreturn文を配置する必要があり
- 返す前に作成したテンポラリテーブルを削除する必要があります
どれが誰か分かりますか?もし私が考えなかったことがあれば?
今のところ、接続が閉じられる前にテーブルを削除すると、テーブルが機能します。私はそれを手動で管理する必要があると感じていないので、実際にはその方法に満足していない...しかし、私はより良い方法を見つけるまで私は何かに移動します... – mezoid
私はそのようなカップリングを作成し、一緒にドロップすると思う接続、テンポラリテーブルの作成、作業の実行、テンポラリテーブルのドロップ、接続の解放)は、あなたの状況に適したデザインです。作業中の部分に何らかのエラーがあった場合にテーブルを離れないように注意してください。 –