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.
Hinweis |
---|
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
Hinweis |
---|
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)