2 つのテーブルを作成しました。
出版社
- PK、PublisherId、int、not null、indentity +1
- PublisherName、varchar(50)、null 以外
製品
- PK、ProductId、int、null 以外、id +1
- 製品名、varchar(50)、null 以外
- PublisherId、int、null 以外
次に、PublisherId を接続するテーブル間に外部キー制約FK__Product__Publisherを作成しました。
このようにして、各パブリッシャーが複数の製品を持つことができる一方で、それぞれ 1 つのパブリッシャーを持つ製品をサポートしたいと考えています。それはそれと同じくらい簡単です。
ここで、C# でコンソール プロジェクトを作成し、型指定されたデータセットと 2 つの TableAdapter を追加しました。1 つは発行元を指し、もう 1 つは製品を指します。DataSet-Designer は、SQL Server から取得した内容に基づいてリレーションを自動的に追加します。
また、選択した製品の発行者と、選択した発行者のすべての製品にアクセスできるようにするプロパティも自動的に生成します。
これは私のテストコードです:
ProductTableAdapter adapter = new ProductTableAdapter();
foreach (ProductRow product in adapter.GetData())
{
Console.WriteLine(product.PublisherRow.PublisherName);
}
ただし、これは機能しません。生成されたコードでは、プロパティ PublisherRow は次のようになります。
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public LanguageRow PublisherRow {
get {
return ((PublisherRow)(this.GetParentRow(this.Table.ParentRelations["FK_Product_Publisher"])));
}
set {
this.SetParentRow(value, this.Table.ParentRelations["FK_Product_Publisher"]);
}
}
this.Table.ParentRelations には関係が含まれていません。null であり、アクセスすると NullReferenceException が発生します。
ここで何が間違っていますか?