-
Notifications
You must be signed in to change notification settings - Fork 0
MS_TableAdapter
- 戻る(ADO.NET)
- TableAdapter
- DataAdapter
DataAdapter:データ・アダプタ構成ウィザードと大きな差はないが、
TableAdapter:テーブル・アダプタ構成ウィザードは、
型付き DataSet と DataAdapter が統合されたような構造になっている。
-
このため
TableAdapterでは、型付きDataSet、DataTable必須となっている。 -
画面に
TableAdapterを D&D し、テーブル・アダプタ構成ウィザードを起動、 -
クエリビルダを使用して
SELECTクエリを作成し、 -
そこから Insert、Update、Delete の各種メソッドを自動生成できる。
-
SqlCommandではなくメソッドであり、
個別にメソッドを追加できるので複数テーブルの更新等も可能。
(この場合、Partial Class に既定の属性を付与して追加をする)- 方法 : TableAdapter の機能を拡張する
https://learn.microsoft.com/ja-jp/visualstudio/data-tools/extend-the-functionality-of-a-tableadapter
- 方法 : TableAdapter の機能を拡張する
-
TableAdapter間でトランザクションを引き継ぐ場合は、
TransactionScope(MS-DTC)を使用する必要がある。
-
補足(
TableAdapterの実体):TableAdapterは
ADO.NET のクラスではなく、Visual Studio のデザイナが生成するコードである。
System.DataにTableAdapterという型は存在せず、
*.xsdから自動生成された
partial class XxxTableAdapter(内部にSqlDataAdapterを保持)が実体になる。このため、
- デザイナ(
*.xsd)が無いと生成・保守できない- 生成コードは
*.Designer.csに出力され、直接編集すると再生成で失われる
(拡張はpartial class側に書く)という性質を持つ。
補足(
TransactionScopeが必要になる理由): 本文にあるとおり、
TableAdapterは自前でトランザクションを共有する手段を持たない
(内部のSqlConnectionがTableAdapterごとに独立しているため)。ただし、TransactionScopeで括ると
接続が 2 つ開くため MS-DTC への昇格が発生しうる点に注意。
回避するには、生成コードのConnectionプロパティに
同一のSqlConnectionを設定して接続を共有する。using var cn = new SqlConnection(cs); cn.Open(); using var tx = cn.BeginTransaction(); adapter1.Connection = cn; adapter1.Transaction = tx; // partial class 側で公開しておく adapter2.Connection = cn; adapter2.Transaction = tx; // ... tx.Commit();
Transactionプロパティは自動生成されないため、
partial class側に自分で用意する必要がある。
補足(最新化):
TableAdapterは
.NET Framework の Windows フォーム / Web フォーム開発専用で、
.NET Core 以降にはデザイナ サポートが無い。
新規開発では使用せず、既存資産の保守に限る。移行先の考え方は
ADO.NET vs ORM (Entity Framework, Dapper)を参照。
元ページも「今となっては、中途半端で、あまり利用されていない」と
評している技術である。
-
TableAdapter の概要
https://learn.microsoft.com/ja-jp/visualstudio/data-tools/fill-datasets-by-using-tableadapters- 方法 : TableAdapter を作成する
- 方法 : TableAdapter を編集する
- 方法 : TableAdapter クエリを作成する
- 方法 : TableAdapter クエリを編集する
- 方法 : TableAdapter のクエリを表示する
-
連載:Visual Studio 2005 による Windows データベース・プログラミング - @IT
http://www.atmarkit.co.jp/fdotnet/vblab/vsdbprog_index/index.html-
第3回 テーブルアダプタの基礎
http://www.atmarkit.co.jp/fdotnet/vblab/vsdbprog_03/vsdbprog_03_01.html -
第4回 ドラッグ&ドロップで作る Windows DB アプリケーション
http://www.atmarkit.co.jp/fdotnet/vblab/vsdbprog_04/vsdbprog_04_01.html
-
Tags: 移行, データアクセス, .NET開発, ADO.NET
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。