属性ベースの対応付け (LINQ to SQL)
LINQ to SQL では、属性を適用するか、または外部のマッピング ファイルを使用して、SQL Server データベースを LINQ to SQL オブジェクト モデルに対応付けます。 このトピックでは、属性ベースの方法について説明します。
大部分の基本フォームでは、LINQ to SQL は、データベースと DataContext、テーブルとクラス、列およびリレーションシップとそのクラスのプロパティを、それぞれ対応付けています。 属性を使用して、オブジェクト モデル内の継承階層を対応付けることもできます。 詳細については、「方法 : Visual Basic または C# でオブジェクト モデルを生成する (LINQ to SQL)」を参照してください。
Visual Studio を使用している開発者は、通常、オブジェクト リレーショナル デザイナーを使用して属性ベースの対応付けを行います。詳細については オブジェクト リレーショナル デザイナ (O/R デザイナ) および オブジェクト リレーショナル デザイナー (O/R デザイナー) および オブジェクト リレーショナル デザイナー (O/R デザイナー).SQLMetal コマンド ライン ツールを使用したり、属性を自分でハンド コードしたりすることもできます。 詳細については、「方法 : Visual Basic または C# でオブジェクト モデルを生成する (LINQ to SQL)」を参照してください。
メモ |
---|
外部 XML ファイルを使用して対応付けることもできます。詳細については、「外部マッピング参照 (LINQ to SQL)」を参照してください。 |
以下のセクションでは、属性ベースの対応付けについて詳しく説明します。 詳細については、System.Data.Linq.Mapping 名前空間の説明を参照してください。
DatabaseAttribute 属性
この属性は、接続によってデータベースの名前が提供されない場合に、データベースの既定の名前を指定するために使用します。 この属性は省略可能ですが、この属性を使用する場合は、次の表に示されているように、Name プロパティを適用する必要があります。
プロパティ |
型 |
既定値 |
説明 |
---|---|---|---|
String |
Name を参照してください。 |
Name プロパティを使用して、データベースの名前を指定します。 |
詳細については、「DatabaseAttribute」を参照してください。
TableAttribute 属性
この属性は、クラスを、データベース テーブルまたはビューに関連付けられたエンティティ クラスとして指定するために使用します。 LINQ to SQL は、この属性を持つクラスを、永続的なクラスとして扱います。 次の表は、Name プロパティについての説明です。
プロパティ |
型 |
既定値 |
説明 |
---|---|---|---|
String |
クラス名と同じ文字列 |
クラスを、データベース テーブルに関連付けられたエンティティ クラスとして指定します。 |
詳細については、「TableAttribute」を参照してください。
ColumnAttribute 属性
この属性は、データベース テーブルの列を表すエンティティ クラスのメンバーを指定するために使用します。 この属性は、フィールドまたはプロパティに適用できます。
LINQ to SQL がデータベースへの変更を保存すると、列として指定したメンバーのみが取得および保持されます。 この属性を持たないメンバーは非永続的であると見なされ、挿入や更新の場合に送信されません。
この属性のプロパティを次の表に示します。
プロパティ |
型 |
既定値 |
説明 |
---|---|---|---|
AutoSync |
なし |
共通言語ランタイム (CLR) に対して、挿入または更新操作の後に値を取得することを指示します。 オプション: Always、Never、OnUpdate、OnInsert |
|
Boolean |
true |
列に null 値を含めることができることを示します。 |
|
String |
推論によるデータベース列型 |
データベースの型と修飾子を使用して、データベース列の型を指定します。 |
|
String |
空 |
データベースの計算列を定義します。 |
|
Boolean |
false |
データベースが自動生成する値が、列に含まれることを示します。 |
|
Boolean |
false |
LINQ to SQL 継承階層の識別子の値が列に含まれることを示します。 |
|
Boolean |
false |
このクラス メンバーが、テーブルの主キーの列、または主キーの一部である列を表すことを指定します。 |
|
Boolean |
false |
メンバーの列の型を、データベースのタイムスタンプまたはバージョン番号として指定します。 |
|
UpdateCheck |
Always (メンバーの IsVersion が true の場合は除く) |
LINQ to SQL がオプティミスティック同時実行競合を検出する方法を指定します。 |
詳細については、「ColumnAttribute」を参照してください。
メモ |
---|
AssociationAttribute プロパティ値と ColumnAttribute Storage プロパティ値では大文字と小文字が区別されます。たとえば、AssociationAttribute.Storage プロパティの属性に使用されている値は、コード内の別の場所で使用されている対応するプロパティ名と、大文字と小文字が一致するようにしてください。これは、Visual Basic など、通常は大文字と小文字が区別されない言語を含むすべての .NET プログラミング言語に適用されます。Storage プロパティの詳細については、「DataAttribute.Storage」を参照してください。 |
AssociationAttribute 属性
この属性は、外部キーと主キーのリレーションシップなど、データベース内の関連付けを表すプロパティを指定するために使用します。 リレーションシップの詳細については、「方法 : データベース リレーションシップを割り当てる (LINQ to SQL)」を参照してください。
この属性のプロパティを次の表に示します。
プロパティ |
型 |
既定値 |
説明 |
---|---|---|---|
Boolean |
false |
外部キー メンバーがすべて null 非許容の関連付けの場合、関連付けが null に設定されるとオブジェクトを削除します。 |
|
String |
なし |
関連付けに削除の動作を追加します。 |
|
Boolean |
false |
true の場合、データベースのリレーションシップを表す関連付けの中で、メンバーを外部キーとして指定します。 |
|
Boolean |
false |
true の場合、外部キーの一意性の制約を示します。 |
|
String |
関連クラスの ID |
ターゲット エンティティ クラスの 1 つ以上のメンバーを、関連付けの他方の側のキー値として指定します。 |
|
String |
包含クラスの ID |
関連付けのこちら側のキー値を表す、このエンティティ クラスのメンバーを指定します。 |
詳細については、「AssociationAttribute」を参照してください。
メモ |
---|
AssociationAttribute プロパティ値と ColumnAttribute Storage プロパティ値では大文字と小文字が区別されます。たとえば、AssociationAttribute.Storage プロパティの属性に使用されている値は、コード内の別の場所で使用されている対応するプロパティ名と、大文字と小文字が一致するようにしてください。これは、Visual Basic など、通常は大文字と小文字が区別されない言語を含むすべての .NET プログラミング言語に適用されます。Storage プロパティの詳細については、「DataAttribute.Storage」を参照してください。 |
InheritanceMappingAttribute 属性
この属性は、継承階層を対応付けるために使用します。
この属性のプロパティを次の表に示します。
プロパティ |
型 |
既定値 |
説明 |
---|---|---|---|
String |
なし。 値を指定する必要があります。 |
識別子のコード値を指定します。 |
|
Boolean |
false |
true の場合、ストア内の識別子の値が、指定された値に一致しないときは、この型のオブジェクトをインスタンス化します。 |
|
型 |
なし。 値を指定する必要があります。 |
階層内のクラスの型を指定します。 |
詳細については、「InheritanceMappingAttribute」を参照してください。
FunctionAttribute 属性
この属性は、データベース内のストアド プロシージャまたはユーザー定義関数として表すメソッドを指定するために使用します。
この属性のプロパティを次の表に示します。
プロパティ |
型 |
既定値 |
説明 |
---|---|---|---|
Boolean |
false |
false の場合、ストアド プロシージャへの対応付けを表します。 true の場合、ユーザー定義関数への対応付けを表します。 |
|
String |
データベース内の名前と同じ文字列 |
ストアド プロシージャまたはユーザー定義関数の名前を指定します。 |
詳細については、「FunctionAttribute」を参照してください。
ParameterAttribute 属性
この属性は、ストアド プロシージャ メソッドの入力パラメーターを対応付けるために使用します。
この属性のプロパティを次の表に示します。
プロパティ |
型 |
既定値 |
説明 |
---|---|---|---|
String |
なし |
データベースの型を指定します。 |
|
String |
データベース内のパラメーター名と同じ文字列 |
パラメーターの名前を指定します。 |
詳細については、「ParameterAttribute」を参照してください。
ResultTypeAttribute 属性
この属性は、結果の型を指定するために使用します。
この属性のプロパティを次の表に示します。
プロパティ |
型 |
既定値 |
説明 |
---|---|---|---|
型 |
(なし) |
IMultipleResults を返すストアド プロシージャに対応付けられているメソッドで使用します。 ストアド プロシージャの有効な型マッピングまたは期待される型マッピングを宣言します。 |
詳細については、「ResultTypeAttribute」を参照してください。
DataAttribute 属性
この属性は、名前およびプライベート ストレージ フィールドを指定するために使用します。
この属性のプロパティを次の表に示します。
プロパティ |
型 |
既定値 |
説明 |
---|---|---|---|
String |
データベース内の名前と同じ |
テーブル、列などの名前を指定します。 |
|
String |
パブリック アクセサー |
基になるストレージ フィールドの名前を指定します。 |
詳細については、「DataAttribute」を参照してください。