11月1日(火)1、2コマ目
今日、やったこと
[練習問題]C#+ロック
今日のホワイトボード
複数のSQLを同一トランザクションのメンバにするには
同じトランザクションオブジェクトを参照するコマンドオブジェクトは同じトランザクションのメンバになります。
![]() |
| 図 複数のSQLを同一トランザクションのメンバにする |
ロック用SQLの実行
C#にはJavaのexecute()メソッドに相当する超ユーティリティメソッドがないため、ExecuteScalar()で代用してください。
![]() |
| 図 ロック用SQLを実行する |
今日のソースコード
Startup.cs
いつもどおり。セッションオブジェクトは使いません。
Item.cs
いつもどおり。ID、商品名、在庫数のプロパティとコンストラクタ。
ItemDAO.cs
Update()メソッドがポイント。
ロック用OracleCommandオブジェクトと更新用OracleCommandオブジェクトの両方に同じTransactionオブジェクトをセットすること。
Index.cshtml.cs
OnPost()の引数は押されたボタンのvalue属性値(商品ID)のみ。
ボタンからIDを取得、引き当て数入力用テキストボックスのname属性を生成する。
Index.cshtml
特にややこしいことはないかと。
次回は
C#+トランザクションの確認テストをやります。
確認テストの注意点
今回の課題は前回Javaで作ってもらったものと同じようなものです。
前回のJavaの提出物には無駄な結合をしている人がちょこちょこおられました。今回は注意してください。
![]() |
| 図 無駄な結合 |


