## 29.3 Mapping von Objekten Wie bereits erwähnt wurde und im C#-Code der Entitätsklasse Product deutlich zu erkennen ist, spielen Attribute in Entitätsklassen eine wichtige Rolle. Zu den wichtigsten Attributen zählen: Table Column Association Diese sind nebst weiteren Attributen im Namespace System.Data.Linq.Mapping definiert. ### 29.3.1 Das »Table«-Attribut Mit dem Attribut Table wird eine Klasse zu einer Entitätsklasse. Um zu beschreiben, dass eine Klasse mit dem Bezeichner Products mit der Products-Tabelle in Beziehung gesetzt werden soll, genügt die einfache Angabe des Attributs:
    [Table()]
    public partial class Products { ... }
Diese Angabe sagt aus, dass der Name der Klasse, hier Products, dem Namen der Datenbanktabelle entspricht. Meist werden Sie aber einen anderen Klassenbezeichner wählen. Zur Erinnerung: Ein Objekt der Entitätsklasse entspricht einem gemappten Datensatz und nicht einer Liste von Datensätzen. Insofern sollte die Entitätsklasse besser Product heißen. Sie müssen dann den Name-Parameter des Table-Attributs angeben. Der Wert gibt den Originalnamen der Tabelle in der Datenbank als Zeichenfolge an:
    [Table(Name="dbo.Products")]
    public partial class Product { ... }
### 29.3.2 Das »Column«-Attribut In einer Entitätsklasse sind die Felder oder Eigenschaften nicht automatisch einer Tabellenspalte zugeordnet. Um eine konkrete Zuordnung zu beschreiben, ist das Attribut Column notwendig, das auf eine Eigenschaft oder ein Feld angewendet werden kann. Durch Setzen zusätzlicher Parameter kann den Spalten zusätzliches Verhalten vorgegeben werden (siehe Tabelle 29.1).

Tabelle 29.1 Die Parameter des »Column«-Attributs

Parameter | Beschreibung
CanBeNull | Gibt an, ob das Datenbankfeld null sein kann. Der Standardwert ist false.
DbType | Dieser Parameter bestimmt den Datentyp der Spalte. Wenn Sie beispielsweise Int NOT NULL IDENTITY angeben, legen Sie fest, dass der Feldinhalt nicht null sein darf. Der Zusatz IDENTITY legt fest, dass der SQL Server den Spaltenwert automatisch generiert.
IsPrimaryKey | Mit diesem Parameter wird das Datenbankfeld als Primärschlüssel der Datenbanktabelle definiert.
Name | Dieser Parameter beschreibt den Originalnamen des Datenbankfelds in der Datenbanktabelle. Der Parameter ist nur dann notwendig, wenn Sie einen Eigenschaftsnamen in der Entitätsklasse wählen, der vom Originalbezeichner der entsprechenden Spalte in der Datenbanktabelle abweicht.
Storage | Dieser Parameter mappt eine Spalte direkt an das darunter liegende private Feld einer Klasse, statt an die Eigenschaft.