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


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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/06/08 10:53:52
  • 終了:2007/06/12 12:02:03

回答(2件)

id:freemann No.1

freemann回答回数302ベストアンサー獲得回数462007/06/08 12:51:24

ポイント35pt

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

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

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

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

http://end

id:disca

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

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

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

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

2007/06/08 14:39:16
id:freemann No.2

freemann回答回数302ベストアンサー獲得回数462007/06/08 15:33:36

ポイント35pt

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

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

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

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

http://end

id:disca

ありがとうございます。

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

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

報告ですが、

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

登録するようにします。

DataSet.DataTable.DataTableNewRowEventHandler

2007/06/12 12:01:46

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません