SqlMetal.exe (Tool zur Codegenerierung)SqlMetal.exe (Code Generation Tool)

Das SqlMetal-Befehlszeilentool generiert Code und Zuordnungen für die LINQ to SQLLINQ to SQL-Komponente von .NET Framework.The SqlMetal command-line tool generates code and mapping for the LINQ to SQLLINQ to SQL component of the .NET Framework. Durch Anwenden der später in diesem Thema behandelten Optionen können Sie SqlMetal anweisen, mehrere verschiedene Aktionen wie etwa die folgenden auszuführen:By applying options that appear later in this topic, you can instruct SqlMetal to perform several different actions that include the following:

  • Generieren von Quellcode und Zuordnungsattributen oder einer Zuordnungsdatei von einer Datenbank ausFrom a database, generate source code and mapping attributes or a mapping file.

  • Generieren einer DBML-Datei (Intermediate Database Markup Language) zum Anpassen von einer Datenbank ausFrom a database, generate an intermediate database markup language (.dbml) file for customization.

  • Generieren von Code und Zuordnungsattributen oder einer Zuordnungsdatei von einer DBML-Datei ausFrom a .dbml file, generate code and mapping attributes or a mapping file.

Dieses Tool wird automatisch mit Visual Studio installiert.This tool is automatically installed with Visual Studio. Standardmäßig befindet sich die Datei unter " drive:\Programme\Microsoft SDKs\Windows\vn.nn\bin".By default, the file is located at drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin. Wenn Sie Visual Studio nicht installieren, können Sie die SQLMetal-Datei auch über einen Download des Windows SDKerhalten.If you do not install Visual Studio, you can also get the SQLMetal file by downloading the Windows SDK.

Hinweis

Entwickler, die Visual Studio verwenden, können auch den objektrelationalen Designer verwenden, um Entitätsklassen zu generieren.Developers who use Visual Studio can also use the Object Relational Designer to generate entity classes. Die Befehlszeilenmethode ist für umfangreiche Datenbanken gut skalierbar.The command-line approach scales well for large databases. Da SqlMetal ein Befehlszeilentool ist, können Sie es in einem Buildprozess verwenden.Because SqlMetal is a command-line tool, you can use it in a build process.

Verwenden Sie die Developer-Eingabeaufforderung für Visual Studio (oder die Visual Studio-Eingabeaufforderung in Windows 7), um das Tool auszuführen.To run the tool, use the Developer Command Prompt for Visual Studio (or the Visual Studio Command Prompt in Windows 7). Weitere Informationen finden Sie unter Command Prompts (Eingabeaufforderung). Geben Sie bei er Eingabeaufforderung Folgendes ein:For more information, see Command Prompts.At the command prompt, type the following:

SyntaxSyntax

sqlmetal [options] [<input file>]  

OptionenOptions

Geben Sie zum Anzeigen der aktuellsten Optionsliste sqlmetal /? in einer Eingabeaufforderung am installierten Speicherort ein.To view the most current option list, type sqlmetal /? at a command prompt from the installed location.

VerbindungsoptionenConnection Options

OptionOption BeschreibungDescription
/server: <name>/server: <name> Gibt den Datenbank-Servernamen an.Specifies database server name.
/database: <name>/database: <name> Gibt den Datenbankkatalog auf dem Server an.Specifies database catalog on server.
/user: <name>/user: <name> Gibt die Benutzer-ID für die Anmeldung an. Standardwert: Verwenden der Windows-Authentifizierung.Specifies logon user id. Default value: Use Windows authentication.
/password: <password>/password: <password> Gibt das Anmeldekennwort an.Specifies logon password. Standardwert: Verwenden der Windows-Authentifizierung.Default value: Use Windows authentication.
/conn: <connection string>/conn: <connection string> Gibt die Verbindungszeichenfolge für Datenbanken an.Specifies database connection string. Kann nicht mit den Optionen /server, /database, /useroder /password verwendet werden.Cannot be used with /server, /database, /user, or /password options.

Die Verbindungszeichenfolge darf den Dateinamen nicht enthalten.Do not include the file name in the connection string. Fügen Sie stattdessen den Dateinamen in der Befehlszeile als Eingabedatei hinzu.Instead, add the file name to the command line as the input file. In der folgenden Zeile ist beispielsweise „c:\northwnd.mdf“ als Eingabedatei angegeben: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf" .For example, the following line specifies "c:\northwnd.mdf" as the input file: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".
/timeout: <seconds>/timeout: <seconds> Gibt den Timeoutwert an, wenn SqlMetal auf die Datenbank zugreift.Specifies time-out value when SqlMetal accesses the database. Standardwert: 0 (d. h. kein Zeitlimit).Default value: 0 (that is, no time limit).

ExtraktionsoptionenExtraction options

OptionOption BeschreibungDescription
/views/views Extrahiert Datenbankansichten.Extracts database views.
/functions/functions Extrahiert Datenbankfunktionen.Extracts database functions.
/sprocs/sprocs Extrahiert gespeicherte Prozeduren.Extracts stored procedures.

AusgabeoptionenOutput options

OptionOption BeschreibungDescription
/dbml [:file]/dbml [:file] Sendet die Ausgabe als DBML-Datei.Sends output as .dbml. Kann nicht zusammen mit der Option /map verwendet werden.Cannot be used with /map option.
/code [:file]/code [:file] Sendet die Ausgabe als Quellcode.Sends output as source code. Kann nicht zusammen mit der Option /dbml verwendet werden.Cannot be used with /dbml option.
/map [:file]/map [:file] Generiert anstelle von Attributen eine XML-Zuordnungsdatei.Generates an XML mapping file instead of attributes. Kann nicht zusammen mit der Option /dbml verwendet werden.Cannot be used with /dbml option.

VerschiedenesMiscellaneous

OptionOption BeschreibungDescription
/language: <language>/language: <language> Gibt die Quellcodesprache an.Specifies source code language.

Gültige < : vb, csharp.Valid <language>: vb, csharp.

Standardwert: von der Erweiterung des Namens der Codedatei abgeleitet.Default value: Derived from extension on code file name.
/namespace: <name>/namespace: <name> Gibt den Namespace des generierten Codes an.Specifies namespace of the generated code. Standardwert: kein Namespace.Default value: no namespace.
/context: <type>/context: <type> Gibt Namen der Datenkontextklasse an.Specifies name of data context class. Standardwert: vom Datenbanknamen abgeleitet.Default value: Derived from database name.
/entitybase: <type>/entitybase: <type> Gibt die Basisklasse der Entitätsklassen im generierten Code an.Specifies the base class of the entity classes in the generated code. Standardwert: Entitäten verfügen über keine Basisklasse.Default value: Entities have no base class.
/pluralize/pluralize Klassen- und Membernamen werden automatisch in Plural- oder Singularform verwendet.Automatically pluralizes or singularizes class and member names.

Diese Option ist nur in der englischen Version (US-Version) verfügbar.This option is available only in the U.S. English version.
/serialization: <option>/serialization: <option> Generiert serialisierbare Klassen.Generates serializable classes.

Gültige <option> : None, Unidirectional.Valid <option>: None, Unidirectional. Standardwert: KeineDefault value: None.

Weitere Informationen finden Sie unter Serialization (Serialisierung).For more information, see Serialization.

EingabedateiInput File

OptionOption BeschreibungDescription
<eingabedatei><input file> Gibt eine SQL Server Express-Datei (.mdf), eine SQL Server Compact 3.5-Datei (.sdf) oder eine Zwischendatei (.dbml) an.Specifies a SQL Server Express .mdf file, a SQL Server Compact 3.5 .sdf file, or a .dbml intermediate file.

HinweiseRemarks

Die SqlMetal-Funktionalität umfasst eigentlich zwei Schritte:SqlMetal functionality actually involves two steps:

  • Extrahieren der Datenbank-Metadaten in eine DBML-DateiExtracting the metadata of the database into a .dbml file.

  • Generieren einer CodeausgabedateiGenerating a code output file.

    Durch Verwenden der entsprechenden Befehlszeilenoptionen können Sie Visual Basic- oder C#-Quellcode bzw. eine XML-Zuordnungsdatei erstellen.By using the appropriate command-line options, you can produce Visual Basic or C# source code, or you can produce an XML mapping file.

Um die Metadaten aus einer MDF-Datei zu extrahieren, müssen Sie den Namen der MDF-Datei nach allen anderen Optionen eingeben.To extract the metadata from an .mdf file, you must specify the name of the .mdf file after all other options.

Wenn /Server nicht angegeben ist, wird localhost/sqlexpress angenommen.If no /server is specified, localhost/sqlexpress is assumed.

Microsoft SQL Server 2005 löst eine Ausnahme aus, wenn mindestens eine der folgenden Bedingungen erfüllt ist:Microsoft SQL Server 2005 throws an exception if one or more of the following conditions are true:

  • SqlMetal versucht, eine gespeicherte Prozedur zu extrahieren, die sich selbst aufruft.SqlMetal tries to extract a stored procedure that calls itself.

  • Die Schachtelungsebene einer gespeicherten Prozedur, Funktion, oder Ansicht übersteigt 32.The nesting level of a stored procedure, function, or view exceeds 32.

    SqlMetal fängt diese Ausnahme ab und gibt sie als Warnung aus.SqlMetal catches this exception and reports it as a warning.

Um einen Namen für eine Eingabedatei anzugeben, fügen Sie den Namen der Befehlszeile als Eingabedatei hinzu.To specify an input file name, add the name to the command line as the input file. Die Angabe des Dateinamens in der Verbindungszeichenfolge (mithilfe der Option /conn ) wird nicht unterstützt.Including the file name in the connection string (using the /conn option) is not supported.

BeispieleExamples

Generiert eine DBML-Datei, die extrahierte SQL-Metadaten umfasst:Generate a .dbml file that includes extracted SQL metadata:

sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbmlsqlmetal /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:Generate a .dbml file that includes extracted SQL metadata from an .mdf file by using SQL Server Express:

sqlmetal /dbml:mymeta.dbml mydbfile.mdfsqlmetal /dbml:mymeta.dbml mydbfile.mdf

Generiert aus SQL Server Express eine DBML-Datei, die extrahierte SQL-Metadaten umfasst:Generate a .dbml file that includes extracted SQL metadata from SQL Server Express:

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

Generiert Quellcode aus einer DBML-Metadatendatei:Generate source code from a .dbml metadata file:

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

Generiert Quellcode direkt aus SQL-Metadaten:Generate source code from SQL metadata directly:

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

Hinweis

Wenn Sie die Option /pluralize mit der Northwind-Beispieldatenbank verwenden, stellen Sie folgendes Verhalten fest.When you use the /pluralize option with the Northwind sample database, note the following behavior. Wenn SqlMetal Zeilentypnamen für Tabellen erstellt, wird für Tabellennamen die Singularform verwendet.When SqlMetal makes row-type names for tables, the table names are singular. Wenn DataContext -Eigenschaften für Tabellen erstellt werden, wird für Tabellennamen die Pluralform verwendet.When it makes DataContext properties for tables, the table names are plural. Zufällig treten die Tabellen in der Northwind-Beispieldatenbank bereits in Pluralform auf.Coincidentally, the tables in the Northwind sample database are already plural. Deshalb ist nicht erkennbar, dass dieser Schritt funktioniert.Therefore, you do not see that part working. Obwohl es üblich ist, Datenbanktabellen im Singular zu benennen, ist es in .NET auch verbreitet, Auflistungen in Pluralform zu benennen.Although it is common practice to name database tables singular, it is also a common practice in .NET to name collections plural.

Siehe auchSee also