生徒検索画面の作成
次に、生徒データ管理用のStudentテーブルと生徒検索画面を作成してみましょう。生徒データは多くなることが予想されるため、一覧画面ではなく検索機能を持った検索画面として作成します。
以下の手順で作成します。
[5]Studentテーブルを作成する
生徒データを保存するStudentテーブルを作成します。ソリューションエクスプローラーで[Data Sources]フォルダーを右クリックし[Add Table]をクリックします(図16)。
![図16:ソリューションエクスプローラーからテーブル追加](http://cz-cdn.shoeisha.jp/static/images/article/5752/5752_fig16.gif)
すると、テーブルデザイナが表示されます。テーブル名を[Table1Item]から「Student」に変更し、表4のように、テーブル列を定義します。
Name | Type | Required | 説明 |
Id | Int32 | True | ID |
Name | String | True | 名前 |
Tel | PhoneNumber | False | 電話番号 |
EmailAddress | False | メールアドレス | |
BirthDate | Date | False | 生年月日 |
Gender | String | False | 性別('M'または'F') |
テーブルデザイナ上では、次のような表示となります(図17)。
![図17:Studentテーブルのデザイナ](http://cz-cdn.shoeisha.jp/static/images/article/5752/5752_fig17.gif)
ここでは、Tel列のデータ型としてPhoneNumber、Email列のデータ型としてEmailAddressと、ビジネス用のデータ型を設定しています。後述する手順により、Gender列には選択リストから値を設定できるようにします。
次に、プロパティウィンドウで各テーブル列のプロパティを、表5のように設定します。
列名 | プロパティ | 値 | プロパティの説明 |
Name | Display Name | 名前 | 画面上の表示名 |
Tel | Display Name | 電話番号 | 画面上の表示名 |
Display Name | メールアドレス | 画面上の表示名 | |
Default Email Domain | example.com | ドメイン省略時に使用されるドメイン名 | |
BirthDate | Display Name | 生年月日 | 画面上の表示名 |
Gender | Display Name | 性別 | 画面上の表示名 |
次に、Gender列に対して選択リストを追加します。Gender列のプロパティウィンドウで[Choice List]リンクをクリックします(図18)。
![図18:Gender列の選択リストの作成](http://cz-cdn.shoeisha.jp/static/images/article/5752/5752_fig18.gif)
すると[Choice List]ダイアログボックスが表示されます。図19にあるように、2つのリスト項目を追加し[OK]ボタンをクリックします。これにより画面上では、性別の入力時に選択リストが自動表示されるようになります。
![図19:リスト項目を追加した[Choice List]ダイアログボックス](http://cz-cdn.shoeisha.jp/static/images/article/5752/5752_fig19.gif)
[6]TeacherテーブルとStudentテーブル間の関連を作成する
TeacherテーブルとStudentテーブル間の1対多の関連を作成します。表示されているStudentテーブルのデザイナ上部にある[Relationship...]ボタンをクリックします(図20)。
![図20:関連の作成](http://cz-cdn.shoeisha.jp/static/images/article/5752/5752_fig20.gif)
すると[Add New Relationship]ダイアログボックスが表示されます(図21)。
![図21:[Add New Relationship]ダイアログボックス](http://cz-cdn.shoeisha.jp/static/images/article/5752/5752_fig21.gif)
表6のように、関連を設定します。
項目 | From | To | 説明 |
Name | Student | Teacher | テーブル名 |
Multiplicity | Many | One | 関連度(1対1、1対多など) |
On Delete Behavior | (設定不可) | Restricted | 削除時の挙動 |
Navigation Property | Teacher | StudentCollection | 各テーブルに追加される列名 |
[On Delete Behavior]を[Restricted]に設定すると、先生データに生徒データが関連付けられている場合、先生データは削除できません。もう一方の選択肢である[Cascade delete]に設定すると、先生データの削除時に関連付けられているすべての生徒のデータも一緒に削除されます。ここでは[Restricted]に設定します。
設定が終わったら[OK]ボタンをクリックして関連を作成します。すると、テーブルデザイナの表示が更新され、StudentテーブルにTeacher列が追加されていることが分かります(図22)。Studentテーブルの変更を保存します。
![図22:関連が追加されたStudentテーブルのデザイナ](http://cz-cdn.shoeisha.jp/static/images/article/5752/5752_fig22.gif)