- PR -

[LINQ to SQL] 親子テーブル(多対多関係)の新規レコードの挿入

1
投稿者投稿内容
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2008-10-21 07:55
LINQ to SQL で、多対多関係の新規レコードの挿入がうまく行かずに困っています。

例えば、以下のように Order テーブル、Product テーブル、そして OrderDetail テーブルがあるとします。

---------
Order Table
---------
OrderID [Auto Increment]
Field1
Field2
Field3

---------
Product Table
---------
ProductID [Auto Increment]
Field1
Field2
Field3

---------
OrderDetail Table
---------
OrderID
ProductID
Field1
Field2
Field3

Product テーブルにはあらかじめ商品データが登録されていて、Order テーブルに受注データを登録するフォームを作るとします。

その際、OrderDetail テーブルも同時に登録(1オーダーに複数の商品を登録)したいとします。

LINQ to SQL では、新規レコード挿入時には自動連番の主キー(OrderID)には "0" が一時的に設定され、SubmitChanges() 時に新規IDが発行されるようですが、OrderDetail テーブルの OrderID にその値を設定するにはどうすればいいのでしょうか?

試しに "0" を設定してみましたが以下のエラーが発生してしまいました。

"INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_xxxxx' ..."

アドバイスをお願いします。

[ メッセージ編集済み 編集者: Shin 編集日時 2008-10-21 08:36 ]
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2008-10-21 09:12
OrderDetail テーブルの参照の仕方に問題がありました。

dc.OrderDetail を参照するのではなく、
entity(親テーブルのレコード).OrderDetail を参照すればいいんですね。

うまく行きました。お世話をかけました。
1

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