属性ベースの対応付け

LINQ to SQL では、属性を適用するか、または外部のマッピング ファイルを使用して、SQL Server データベースを LINQ to SQL オブジェクト モデルに対応付けます。 このトピックでは、属性ベースの方法について説明します。

大部分の基本フォームでは、LINQ to SQL は、データベースと DataContext、テーブルとクラス、列およびリレーションシップとそのクラスのプロパティを、それぞれ対応付けています。 属性を使用して、オブジェクト モデル内の継承階層を対応付けることもできます。 詳細については、Visual Basic または C# でオブジェクト モデルを生成する」を参照してください。

Visual Studio を使用する開発者は、通常、オブジェクト リレーショナル デザイナーを使用して属性ベースの対応付けを実行します。 また、SQLMetal コマンド ライン ツールを使用したり、自分で属性をハンド コードしたりすることもできます。 詳細については、Visual Basic または C# でオブジェクト モデルを生成する」を参照してください。

Note

外部 XML ファイルを使用して対応付けることもできます。 詳細については、「外部マップ」を参照してください。

以下のセクションでは、属性ベースの対応付けについて詳しく説明します。 詳細については、「System.Data.Linq.Mapping」を参照してください。

DatabaseAttribute 属性

この属性は、接続によってデータベースの名前が提供されない場合に、データベースの既定の名前を指定するために使用します。 この属性は省略可能ですが、この属性を使用する場合は、次の表に示されているように、Name プロパティを適用する必要があります。

プロパティ Type Default 説明
Name String Name」を参照してください。 Name プロパティを使用して、データベースの名前を指定します。

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

TableAttribute 属性

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

プロパティ Type Default 説明
Name String クラス名と同じ文字列 クラスを、データベース テーブルに関連付けられたエンティティ クラスとして指定します。

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

ColumnAttribute 属性

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

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

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

プロパティ Type Default 説明
AutoSync AutoSync Never 共通言語ランタイム (CLR) に対して、挿入または更新操作の後に値を取得することを指示します。

オプション:Always、Never、OnUpdate、OnInsert。
CanBeNull ブール型 true 列に null 値を含めることができることを示します。
DbType String 推論によるデータベース列型 データベースの型と修飾子を使用して、データベース列の型を指定します。
Expression String Empty データベースの計算列を定義します。
IsDbGenerated ブール型 false データベースが自動生成する値が、列に含まれることを示します。
IsDiscriminator ブール型 false LINQ to SQL 継承階層の識別子の値が列に含まれることを示します。
IsPrimaryKey ブール型 false このクラス メンバーが、テーブルの主キーの列、または主キーの一部である列を表すことを指定します。
IsVersion ブール型 false メンバーの列の型を、データベースのタイムスタンプまたはバージョン番号として指定します。
UpdateCheck UpdateCheck Always (メンバーの IsVersiontrue の場合は除く) LINQ to SQL がオプティミスティック コンカレンシーの競合を検出する方法を指定します。

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

Note

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

AssociationAttribute 属性

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

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

プロパティ Type Default 説明
DeleteOnNull ブール型 false 外部キー メンバーがすべて null 非許容の関連付けの場合、関連付けが null に設定されるとオブジェクトを削除します。
DeleteRule String None 関連付けに削除の動作を追加します。
IsForeignKey ブール型 false true の場合、データベースのリレーションシップを表す関連付けの中で、メンバーを外部キーとして指定します。
IsUnique ブール型 false true の場合、外部キーの一意性の制約を示します。
OtherKey String 関連クラスの ID ターゲット エンティティ クラスの 1 つ以上のメンバーを、関連付けの他方の側のキー値として指定します。
ThisKey String 包含クラスの ID 関連付けのこちら側のキー値を表す、このエンティティ クラスのメンバーを指定します。

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

Note

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

InheritanceMappingAttribute 属性

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

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

プロパティ Type Default 説明
Code String なし。 値を指定する必要があります。 識別子のコード値を指定します。
IsDefault ブール型 false true の場合、ストア内の識別子の値が、指定された値に一致しないときは、この型のオブジェクトをインスタンス化します。
Type 種類 なし。 値を指定する必要があります。 階層内のクラスの型を指定します。

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

FunctionAttribute 属性

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

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

プロパティ Type Default 説明
IsComposable ブール型 false false の場合、ストアド プロシージャへの対応付けを表します。 true の場合、ユーザー定義関数への対応付けを表します。
Name String データベース内の名前と同じ文字列 ストアド プロシージャまたはユーザー定義関数の名前を指定します。

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

ParameterAttribute 属性

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

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

プロパティ Type Default 説明
DbType String None データベースの型を指定します。
Name String データベース内のパラメーター名と同じ文字列 パラメーターの名前を指定します。

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

ResultTypeAttribute 属性

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

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

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

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

DataAttribute 属性

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

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

プロパティ Type Default 説明
Name String データベース内の名前と同じ テーブル、列などの名前を指定します。
Storage String パブリック アクセサー 基になるストレージ フィールドの名前を指定します。

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

関連項目