まず、アプリ内で LinqToSQL とデータ コンテキストを使用して、データベースのクエリと更新を行います。私のアプリは Windows Phone 7 アプリです。
わかりました、そのような列を持つ3つのテーブルがあるとしましょう
- 表 A -
Id, Name, Description
- 表 B -
Id, Count, Cost
表 C -
Id, Name, Description, Type
テーブル A とテーブル B の間に 1 対多 (多数のテーブル B と 1 つのテーブル A) の関係を持ちたい
- テーブル C とテーブル B の間に 1 対多の関係を持ちたい (テーブル B が多く、テーブル C が 1 つ)
そこで、関係に使用する列を追加して、3 つのテーブルを次のようにします。
- 表 A -
Id, Name, Description
- 表 B -
Id, Count, Cost, TableA_Id, TableC_Id
- 表 C -
Id, Name, Description, Type
上記を設定しようとしましたが、テーブル B には 2 つの制約があり、コードでこのようなことをすると
TableA Ta = new TableA();
Ta.Name = "NA";
Ta.Description = "NA";
Ta.TableB.Add( new TableB()
{
Count = 1,
Cost = 100
});
App.MyDataContext.Database.TableA.InsertOnSubmit(Ta);
App.MyDataContext.Database.SubmitChanges();
このようなエラーが発生します
対応する主キー値が存在しないため、外部キー値を挿入できません。[ 外部キー制約名 = FK_TableC_TableB ]
エラーが発生した理由を理解したと思いますが、エラーなしで同じ結果を達成できるように、このセットアップを設定する方法があるかどうかを尋ねています。SQL や SQL Server CE は少し使ったことがありますが、このような関係を試したのは初めてです。
編集: 明確にするために、TableA には複数の TableB を含めることができます。TableC には複数の TableB を含めることもできます