次の方法で共有


属性ベースの対応付け (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 プロパティを適用する必要があります。

プロパティ

既定値

説明

Name

String

Name を参照してください。

Name プロパティを使用して、データベースの名前を指定します。

詳細については、「DatabaseAttribute」を参照してください。

TableAttribute 属性

この属性は、クラスを、データベース テーブルまたはビューに関連付けられたエンティティ クラスとして指定するために使用します。 LINQ to SQL は、この属性を持つクラスを、永続的なクラスとして扱います。 次の表は、Name プロパティについての説明です。

プロパティ

既定値

説明

Name

String

クラス名と同じ文字列

クラスを、データベース テーブルに関連付けられたエンティティ クラスとして指定します。

詳細については、「TableAttribute」を参照してください。

ColumnAttribute 属性

この属性は、データベース テーブルの列を表すエンティティ クラスのメンバーを指定するために使用します。 この属性は、フィールドまたはプロパティに適用できます。

LINQ to SQL がデータベースへの変更を保存すると、列として指定したメンバーのみが取得および保持されます。 この属性を持たないメンバーは非永続的であると見なされ、挿入や更新の場合に送信されません。

この属性のプロパティを次の表に示します。

プロパティ

既定値

説明

AutoSync

AutoSync

なし

共通言語ランタイム (CLR) に対して、挿入または更新操作の後に値を取得することを指示します。

オプション: Always、Never、OnUpdate、OnInsert

CanBeNull

Boolean

true

列に null 値を含めることができることを示します。

DbType

String

推論によるデータベース列型

データベースの型と修飾子を使用して、データベース列の型を指定します。

Expression

String

データベースの計算列を定義します。

IsDbGenerated

Boolean

false

データベースが自動生成する値が、列に含まれることを示します。

IsDiscriminator

Boolean

false

LINQ to SQL 継承階層の識別子の値が列に含まれることを示します。

IsPrimaryKey

Boolean

false

このクラス メンバーが、テーブルの主キーの列、または主キーの一部である列を表すことを指定します。

IsVersion

Boolean

false

メンバーの列の型を、データベースのタイムスタンプまたはバージョン番号として指定します。

UpdateCheck

UpdateCheck

Always (メンバーの IsVersion が true の場合は除く)

LINQ to SQL がオプティミスティック同時実行競合を検出する方法を指定します。

詳細については、「ColumnAttribute」を参照してください。

メモメモ

AssociationAttribute プロパティ値と ColumnAttribute Storage プロパティ値では大文字と小文字が区別されます。たとえば、AssociationAttribute.Storage プロパティの属性に使用されている値は、コード内の別の場所で使用されている対応するプロパティ名と、大文字と小文字が一致するようにしてください。これは、Visual Basic など、通常は大文字と小文字が区別されない言語を含むすべての .NET プログラミング言語に適用されます。Storage プロパティの詳細については、「DataAttribute.Storage」を参照してください。

AssociationAttribute 属性

この属性は、外部キーと主キーのリレーションシップなど、データベース内の関連付けを表すプロパティを指定するために使用します。 リレーションシップの詳細については、「方法 : データベース リレーションシップを割り当てる (LINQ to SQL)」を参照してください。

この属性のプロパティを次の表に示します。

プロパティ

既定値

説明

DeleteOnNull

Boolean

false

外部キー メンバーがすべて null 非許容の関連付けの場合、関連付けが null に設定されるとオブジェクトを削除します。

DeleteRule

String

なし

関連付けに削除の動作を追加します。

IsForeignKey

Boolean

false

true の場合、データベースのリレーションシップを表す関連付けの中で、メンバーを外部キーとして指定します。

IsUnique

Boolean

false

true の場合、外部キーの一意性の制約を示します。

OtherKey

String

関連クラスの ID

ターゲット エンティティ クラスの 1 つ以上のメンバーを、関連付けの他方の側のキー値として指定します。

ThisKey

String

包含クラスの ID

関連付けのこちら側のキー値を表す、このエンティティ クラスのメンバーを指定します。

詳細については、「AssociationAttribute」を参照してください。

メモメモ

AssociationAttribute プロパティ値と ColumnAttribute Storage プロパティ値では大文字と小文字が区別されます。たとえば、AssociationAttribute.Storage プロパティの属性に使用されている値は、コード内の別の場所で使用されている対応するプロパティ名と、大文字と小文字が一致するようにしてください。これは、Visual Basic など、通常は大文字と小文字が区別されない言語を含むすべての .NET プログラミング言語に適用されます。Storage プロパティの詳細については、「DataAttribute.Storage」を参照してください。

InheritanceMappingAttribute 属性

この属性は、継承階層を対応付けるために使用します。

この属性のプロパティを次の表に示します。

プロパティ

既定値

説明

Code

String

なし。 値を指定する必要があります。

識別子のコード値を指定します。

IsDefault

Boolean

false

true の場合、ストア内の識別子の値が、指定された値に一致しないときは、この型のオブジェクトをインスタンス化します。

Type

なし。 値を指定する必要があります。

階層内のクラスの型を指定します。

詳細については、「InheritanceMappingAttribute」を参照してください。

FunctionAttribute 属性

この属性は、データベース内のストアド プロシージャまたはユーザー定義関数として表すメソッドを指定するために使用します。

この属性のプロパティを次の表に示します。

プロパティ

既定値

説明

IsComposable

Boolean

false

false の場合、ストアド プロシージャへの対応付けを表します。 true の場合、ユーザー定義関数への対応付けを表します。

Name

String

データベース内の名前と同じ文字列

ストアド プロシージャまたはユーザー定義関数の名前を指定します。

詳細については、「FunctionAttribute」を参照してください。

ParameterAttribute 属性

この属性は、ストアド プロシージャ メソッドの入力パラメーターを対応付けるために使用します。

この属性のプロパティを次の表に示します。

プロパティ

既定値

説明

DbType

String

なし

データベースの型を指定します。

Name

String

データベース内のパラメーター名と同じ文字列

パラメーターの名前を指定します。

詳細については、「ParameterAttribute」を参照してください。

ResultTypeAttribute 属性

この属性は、結果の型を指定するために使用します。

この属性のプロパティを次の表に示します。

プロパティ

既定値

説明

Type

(なし)

IMultipleResults を返すストアド プロシージャに対応付けられているメソッドで使用します。 ストアド プロシージャの有効な型マッピングまたは期待される型マッピングを宣言します。

詳細については、「ResultTypeAttribute」を参照してください。

DataAttribute 属性

この属性は、名前およびプライベート ストレージ フィールドを指定するために使用します。

この属性のプロパティを次の表に示します。

プロパティ

既定値

説明

Name

String

データベース内の名前と同じ

テーブル、列などの名前を指定します。

Storage

String

パブリック アクセサー

基になるストレージ フィールドの名前を指定します。

詳細については、「DataAttribute」を参照してください。

参照

その他の技術情報

リファレンス (LINQ to SQL)