- PR -

TableAdapterのコード上での作成 Visual C# 2005

1
投稿者投稿内容
moco
ベテラン
会議室デビュー日: 2006/05/01
投稿数: 54
投稿日時: 2007-04-02 22:52
いつもお世話になっております。
Visual C# 2005にてDBと連携したWindowsアプリケーションを作成しています。

DBのテーブルの数が変化するので、
それにあわせてTableAdapterをコード上から作成したいのですが、
そんなことはやはりできないのでしょうか。
TableAdapterは、DBのテーブルとデータテーブルとを1対1で結ぶと捉えています。

すみません、どなたかご教授ください。
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2007-04-02 23:12
引用:

勉強ちゅうですさんの書き込み (2007-04-02 22:52) より:
TableAdapterをコード上から作成したいのですが、
そんなことはやはりできないのでしょうか。


 無理、だと思います。最初は「ぉ、TableDataGatewayの.NET実装か」と思ったのですが、
単なるSystem.ComponentModel.Component派生でした。

Fowler, Martine
「テーブルデータゲートウェイ」
『エンタープライズアプリケーションアーキテクチャパターン』
2005年 翔泳社 pp153-161

[ メッセージ編集済み 編集者: lalupin4 編集日時 2007-04-02 23:18 ]
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-04-03 08:48
引用:

勉強ちゅうですさんの書き込み (2007-04-02 22:52) より:

DBのテーブルの数が変化するので、
それにあわせてTableAdapterをコード上から作成したいのですが、


動的にテーブルを作るのであれば、同じ構成のテーブルになるかと思います。
仮にそうだとしたら、ひとつの TableAdapter からオブジェクトを生成して使いまわせば良いです。

構成も異なるというなら、共通するメンバを実装した汎用的な TableAdapter を作ります。

lalupin4さんが仰る通り、TableAdapter という機能があるわけでなく、単に System.ComponentModel.Component から派生しているだけのクラスですから。
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-04-03 10:09
例えばDBのテーブルの一覧を取得して、
テーブルに対して何らかの操作を行うツールのようなプログラムを作る場合は、
プログラムの起動時にデータベースにどんなテーブルがあるかはわかりませんよね。
(それを実行中に取得するのですから)
「DBのテーブルの数が変化」というのはそういう意味でしょうか?

そうだと仮定して話を進めるなら、考え方がずれていると思います。
コードの中で 〜TableAdapter クラスを使用するには、
〜TableAdapter クラスを定義したソースが同じプロジェクト内にあるか、
あるいはそのソースを含むプロジェクトまたはアセンブリへの参照が必要になります。
わかりやすく言うと、exeやdllの中に「〜TableAdapter」という名前のクラスを
含めてしまわないと使えないということです。
つまりテーブルの情報はコンパイル時点でわかっていなければなりません。
したがって、「DBにあるテーブルから〜TableAdapterというクラスを生成する」という行為を
プログラムで動的に(コンパイル時ではなく実行中に)行うのは無理があります。

もし、こういうプログラムを作りたいのであれば、デザイナでデータセットを作るのではなく、
.NET Framework の通常のDataSet や DataTable といったクラスを使うという手段があります。
1

スキルアップ/キャリアアップ(JOB@IT)