コントローラでデータベース接続を開き、開いた接続をモデルに渡して、その接続を使用します。
ただし、2回目にコントローラー(Ajax)を呼び出すと、「接続が開いている必要があります」というエラーメッセージが返されます。ページをリロードし、コントローラーを再度呼び出すと、正常に動作します。ただし、2回目の呼び出しでは、そのエラーメッセージが返され続けます。
私のコントローラーにはDB接続を開くためのコードがあるので、処理(呼び出し)ごとにデータベースを開く必要があると思いました。(オープン)コードはusing {}ブロックにあるため、使用後は自動的に閉じる必要があります。
しかし、私は間違っていると思います:(
これが私のコードです、
public JsonResult myControllerMethod() // Action Controller
{
using (AdsConnection conn = new AdsConnection(connString))
{
conn.Open();
AdsTransaction txn = conn.BeginTransaction(); // Begin Transaction
try
{
MyModel mo = new MyModel();
mo.doProcess(conn); // pass connection to model
txn.Commit();
return Json(new { success = true });
}
catch (Exception e)
{
txn.Rollback();
return Json(new { success = false, message = e.Message });
}
}
}
MyModel
public void doProcess(AdsConncection conn){ // Model
try{
..
//AdsCommand select, update, delete and insert....
..
}catch(Exception e){
throw e;
}
}
誰か知っている、私が間違っていることは?アドバイスしてください。
ありがとう