以下のようなテーブルアダプターのpartialクラスを作成する。
※テーブルにはオートナンバーのID列が存在する。
2 | using System.Data.OleDb; |
4 | namespace AdapterRowUpdated.TESTDataSetTableAdapters |
6 | public partial class TESTTableAdapter |
8 | public void AddRowUpdatedEventHandler() |
10 | this .Adapter.RowUpdated += |
11 | new OleDbRowUpdatedEventHandler(Adapter_RowUpdated); |
14 | /// テーブルのRowUpdateイベント(TableAdapter.Update() 直後に走る) |
17 | void Adapter_RowUpdated( object sender, OleDbRowUpdatedEventArgs e) |
19 | if (e.Status == UpdateStatus.Continue && |
20 | e.StatementType == StatementType.Insert) |
22 | OleDbDataAdapter da = (OleDbDataAdapter)sender; |
24 | new OleDbCommand( "SELECT @@IDENTITY" , |
25 | da.UpdateCommand.Connection); |
26 | if (da.UpdateCommand.Transaction != null ) |
28 | cmd.Transaction = da.UpdateCommand.Transaction; |
30 | ((TESTDataSet.TESTRow)e.Row).ID = ( int )cmd.ExecuteScalar(); |
実際にUPDATEを実行する側では、テーブルアダプターのUPDATE実行前にAddRowUpdatedEventHandlerメソッドを呼び出す。
1 | var ta = new TESTDataSetTableAdapters.TESTTableAdapter(); |
2 | ta.AddRowUpdatedEventHandler(); |
3 | ta.Update(TESTDataTable); |
こうすることにより、Updateの引数で渡したTESTDataTableのID列にオートナンバーの値が入った状態になる。