人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

データベースとC#についての質問です。

「親テーブル」(header)「子テーブル」(detail)の二つのテーブルがあるとします。(1対多の関係)。

.NetFramework のDataSetを使って、親と子テーブルにデータを挿入する場合ですが、子テーブルが所属している親IDを自動的に割り当てることは出来ますでしょうか?(親と子のDataSetのリレーションシップを行えば自動的に子テーブルのDataSetに親IDが自動的にで割り当てられるような気がします。)

●質問者: disca
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:.NET データ データベース リレーション 自動
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● freemann
●35ポイント

まず、確認ですがDataSet内に親テーブルのheaderのDataTableと子テーブルのdetailのDataTableがあって、その間にリレーションシップを作っていて、親IDが外部キーであるということでよいでしょうか?

それであれば、できないかと思います。

というのは、1対多(1対1でもよいです)の関係ですが、detailの親IDが決まらなければ、headerのどの行と連結するのかはプログラム側としてはわからないわけで、それは、Insertするときに決めてやらないといけないと思います。

もし、はずしてたらすみません。

http://end

◎質問者からの返答

ご回答ありがとうございます。

親のテーブルのデータを先に作成すれば、

子テーブルのデータをInsertすれば

自動的に作成されますでしょうか?


2 ● freemann
●35ポイント

親IDが自動的に作成されることはありません。

リレーションシップというのは、自動的にその関連性により何かを決めるのではないです。リレーションシップで関連性を決めるのであるが、どのデータとどのデータが関連があるのかはDBがわかるわけではなく、データを入力するユーザが決めるのです。

ですから、この場合もInsertするときに親IDも一緒にデータをセットしてあげるのは、ユーザであり、プログラムが決めるものではないのです。

Insertする時にどの親IDと関連があるのかわかっているのではないでしょうか?わかっているなら、Insertのときに親IDをセットしてあげればよいと思います。

http://end

◎質問者からの返答

ありがとうございます。

手動で設定するしかないのですね。

ちょっと残念ですが、助かります。

報告ですが、

下記のイベントで子データの作成時に

登録するようにします。

DataSet.DataTable.DataTableNewRowEventHandler

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ