## 29.5 Tools zur Erzeugung von Entitätsklassen Die Beispiele haben bisher eines ganz deutlich gezeigt: Abfragen mit LINQ to SQL sind sehr einfach zu formulieren. Schon an dieser Stelle sei angedeutet, dass die Klasse DataContext ebenfalls sehr einfach einzusetzen ist und viele andere Vorgänge im Zusammenhang mit Datenbankoperationen auf ein Minimum an Programmcode reduziert. Vermutlich werden Sie sich aber dennoch die Frage stellen, ob sich diese Vorteile letztendlich auszahlen, da der Aufwand für die Erstellung einer Entitätsklasse immens hoch ist. Dazu lässt sich sagen, dass Sie die Entitätsklasse nicht von Hand schreiben müssen. Visual Studio stellt Ihnen zwei Tools zur Verfügung, mit den die Generierung der Entitätsklasse zu einem Kinderspiel wird: das Kommandozeilentool SQLMetal den O/R-Designer (Object Relational Designer) Mit Letzterem werden wir uns später in diesem Kapitel noch sehr ausführlich beschäftigen. Beschränken wir uns daher an dieser Stelle auf SQLMetal. #### Das Tool »SQLMetal« Das von LINQ to SQL angebotene Tool unterstützt das Erzeugen von Entitätsklassen direkt aus der Datenbank. Als Ergebnis werden alle Tabellen der Datenbank als Entitätsklassen in C# erstellt. Um die notwendigen Informationen zur Erstellung der Entitätsklassen zu erhalten, ruft SQLMetal die Metadaten der Datenbank ab. Auf deren Basis werden die Datentypen der einzelnen Datenbankfelder und die Beziehungen zwischen den Tabellen ermittelt. Die Datei SQLMetal.exe finden Sie standardmäßig im Verzeichnis \Programme\Microsoft SDKs\Windows\v6.0A\bin. Mit den Optionsschaltern des Tools können Sie festlegen, ob Views, gespeicherte Prozeduren oder Funktionen in die Erstellung mit einbezogen werden sollen. Sie können eine XML-Ausgabedatei generieren und zudem optional festlegen, welchem Namespace die Klassen zugeordnet werden sollen. Das folgende Beispiel generiert die Entitätsklassen der Northwind-Datenbank:
    SQLMetal /server:. /database:Northwind /code:C:\NET\NWindEntities.cs /language:csharp
Die Datei, die die in C# erstellten Entitätsklassen enthält, wird unter dem Bezeichner NWindEntities.cs im Verzeichnis C:\NET abgelegt.