Share via


SqlMetal.exe (Tool zur Codegenerierung)

Das Befehlszeilentool SqlMetal generiert Code und Zuordnungen für die LINQ to SQL-Komponente von .NET Framework. Durch Anwenden der später in diesem Thema behandelten Optionen, können Sie SqlMetal anweisen, mehrere verschiedenen Aktionen wie die folgenden auszuführen:

  • Generieren von Quellcode, Zuordnungsattributen oder einer Zuordnungsdatei von einer Datenbank aus

  • Generieren einer DBML-Datei (Intermediate Database Markup Language) zum Anpassen von einer Datenbank aus

  • Generieren von Code und Zuordnungsattributen oder einer Zuordnungsdatei von einer DBML-Datei aus

Die SQLMetal-Datei ist im Windows SDK enthalten, das mit Visual Studio installiert wird. Standardmäßig befindet sich die Datei unter drive:\Programme\Microsoft SDKs\Windows\vn.nn\bin. Wenn Sie Visual Studio nicht installieren, erhalten Sie die SQLMetal-Datei auch, indem Sie das Windows SDK herunterladen.

HinweisHinweis

Entwickler, die Visual Studio verwenden, können Entitätsklassen auch mit O/R-Designer generieren.Dieser Ansatz für die Befehlszeile ist für umfangreiche Datenbanken gut skalierbar.Da SqlMetal ein Befehlszeilentool ist, können Sie es in einem Buildprozess verwenden.Weitere Informationen finden Sie unter Object Relational Designer (O/R-Designer) und Object Relational Designer (O/R-Designer) und Object Relational Designer (O/R-Designer).

sqlmetal [options] [<input file>]

Optionen

Geben sie zum Anzeigen der aktuellsten Optionsliste sqlmetal /? an einer Eingabeaufforderung vom installierten Speicherort aus ein.

Verbindungsoptionen

Option

Beschreibungen

/server:<name>

Gibt den Datenbankservernamen an.

/database:<name>

Gibt den Datenbankkatalog auf dem Server an.

/user:<name>

Gibt die Anmeldekennung des Benutzers an. Standardwert: Windows-Authentifizierung verwenden.

/password:<Kennwort>

Gibt das Anmeldekennwort an. Standardwert: Windows-Authentifizierung verwenden.

/conn:<Verbindungszeichenfolge>

Gibt die Verbindungszeichenfolge für Datenbanken an. Sie kann nicht mit den Optionen /server, /database, /user oder /password verwendet werden.

Die Verbindungszeichenfolge darf den Dateinamen nicht enthalten. Fügen Sie stattdessen den Dateinamen in der Befehlszeile als Eingabedatei hinzu. In der folgenden Zeile ist beispielsweise "c:\northwnd.mdf" als Eingabedatei angegeben: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".

/timeout:<Sekunden>

Gibt den Timeoutwert an, nach dem SqlMetal auf die Datenbank zugreift. Standardwert: 0 (d. h., kein Zeitlimit).

Extraktionsoptionen

Option

Beschreibungen

/views

Extrahiert Datenbankansichten.

/functions

Extrahiert Datenbankfunktionen.

/sprocs

Extrahiert gespeicherte Prozeduren.

Ausgabeoptionen

Option

Beschreibungen

/dbml[:Datei]

Sendet die Ausgabe als .dbml. Kann nicht zusammen mit der /map-Option verwendet werden.

/code[:Datei]

Sendet die Ausgabe als Quellcode. Kann nicht zusammen mit der /dbml-Option verwendet werden.

/map[:Datei]

Generiert anstelle von Attributen eine XML-Zuordnungsdatei. Kann nicht zusammen mit der /dbml-Option verwendet werden.

Sonstiges

Option

Beschreibungen

/language:<Sprache>

Gibt die Quellcodesprache an.

Gültige <Sprache>: vb, csharp.

Standardwert: von der Erweiterung des Namens der Codedatei abgeleitet.

/namespace:<name>

Gibt den Namespace des generierten Codes an. Standardwert: kein Namespace.

/context:<Typ>

Gibt Namen der Datenkontextklasse an. Standardwert: vom Datenbanknamen abgeleitet.

/entitybase:<Typ>

Gibt die Basisklasse der Entitätsklassen im generierten Code an. Standardwert: Entitäten verfügen über keine Basisklasse.

/pluralize

Klassen- und Membernamen werden automatisch in Plural- oder Singularform verwendet.

Diese Option ist nur in den USA verfügbar. Englische Version.

/serialization:<Option>

Generiert serialisierbare Klassen.

Gültige <Option>: None, Unidirectional. Standardwert: None.

Weitere Informationen finden Sie unter Serialisierung (LINQ to SQL).

Eingabedatei

Option

Beschreibungen

<input file>

Gibt eine SQL Server Express-Datei (.mdf), eine SQL Server Compact 3.5-Datei (.sdf) oder eine Zwischendatei (.dbml) an.

Hinweise

Die SqlMetal-Funktionalität umfasst eigentlich zwei Schritte:

  • Extrahieren der Datenbank-Metadaten in eine DBML-Datei

  • Generieren einer Codeausgabedatei

    Durch Verwenden der entsprechenden Befehlszeilenoptionen können Sie Visual Basic- oder C#-Quellcode bzw. eine XML-Zuordnungsdatei erstellen.

Um die Metadaten aus einer MDF-Datei zu extrahieren, müssen Sie den Namen der MDF-Datei nach allen anderen Optionen eingeben.

Wenn kein /server angegeben wird, wird localhost/sqlexpress vorausgesetzt.

Microsoft SQL Server 2005 löst eine Ausnahme aus, wenn mindestens eine der folgenden Bedingungen erfüllt ist:

  • SqlMetal versucht, eine gespeicherte Prozedur zu extrahieren, die sich selbst aufruft.

  • Die Schachtelungsebene einer gespeicherten Prozedur, Funktion, oder Ansicht übersteigt 32.

    SqlMetal fängt diese Ausnahme ab und gibt sie als Warnung aus.

Um einen Namen für eine Eingabedatei anzugeben, fügen Sie den Namen der Befehlszeile als Eingabedatei hinzu. Die Angabe des Dateinamens in der Verbindungszeichenfolge (unter Verwendung der /conn-Option) wird nicht unterstützt.

Beispiele

Generiert eine DBML-Datei, die extrahierte SQL-Metadaten umfasst:

sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml

Generiert mithilfe von SQL Server Express eine DBML-Datei, die extrahierte SQL-Metadaten aus einer MDF-Datei umfasst:

sqlmetal /dbml:mymeta.dbml mydbfile.mdf

Generiert aus SQL Server Express eine DBML-Datei, die extrahierte SQL-Metadaten umfasst:

sqlmetal /server:. \sqlexpress /dbml:mymeta.dbml /database:northwind

Generiert Quellcode aus einer DBML-Metadatendatei:

sqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbml

Generiert Quellcode direkt aus SQL-Metadaten:

sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharp

HinweisHinweis

Wenn Sie die /pluralize-Option mit der Beispieldatenbank Northwind verwenden, beachten Sie folgendes Verhalten.Wenn SqlMetal Zeilentypnamen für Tabellen erstellt, wird für Tabellennamen die Singularform verwendet.Wenn DataContext-Eigenschaften für Tabellen erstellt werden, wird für Tabellennamen die Pluralform verwendet.Zufällig treten die Tabellen in der Beispieldatenbank Northwind bereits in Pluralform auf.Deshalb ist nicht erkennbar, dass dieser Schritt funktioniert.Obwohl es üblich ist, Datenbanktabellen im Singular zu benennen, ist es in .NET auch verbreitet, Auflistungen in Pluralform zu benennen.

Siehe auch

Aufgaben

Vorgehensweise: Generieren des Objektmodells in Visual Basic oder C# (LINQ to SQL)

Referenz

Referenz zur externen Zuordnung (LINQ to SQL)

Konzepte

Codegenerierung in LINQ to SQL