Delen via


SqlMetal.exe (hulpprogramma voor het genereren van code)

Het opdrachtregelprogramma SqlMetal genereert code en toewijzing voor de LINQ aan het SQL-onderdeel van .NET Framework. Door opties toe te passen die verderop in dit onderwerp worden weergegeven, kunt u SqlMetal instrueren om verschillende acties uit te voeren die het volgende bevatten:

  • Genereer vanuit een database broncode en toewijzingskenmerken of een toewijzingsbestand.

  • Genereer vanuit een database een tussenliggend databasemarkeringstaalbestand (.dbml) voor aanpassing.

  • Genereer vanuit een DBML-bestand code- en toewijzingskenmerken of een toewijzingsbestand.

Dit hulpprogramma wordt automatisch geïnstalleerd met Visual Studio 2019 en eerdere versies. Het bestand bevindt zich standaard op %ProgramFiles%\Microsoft SDK's\Windows[version]\bin. Als u Visual Studio niet installeert, kunt u het SQLMetal-bestand ook downloaden door de Windows SDK te downloaden.

Notitie

Ontwikkelaars die Visual Studio gebruiken, kunnen ook Object Relational Designer gebruiken om entiteitsklassen te genereren. De opdrachtregelbenadering schaalt goed voor grote databases. Omdat SqlMetal een opdrachtregelprogramma is, kunt u dit gebruiken in een buildproces.

Als u het hulpprogramma wilt uitvoeren, gebruikt u de Visual Studio Developer-opdrachtprompt of Visual Studio Developer PowerShell. Voer bij de opdrachtprompt de volgende opdracht in:

sqlmetal [options] [<input file>]  

Opties

Als u de meest recente lijst met opties wilt weergeven, typt sqlmetal /? u bij een opdrachtprompt vanaf de geïnstalleerde locatie.

Verbindingsopties

Optie Omschrijving
/server: <naam> Hiermee geeft u de naam van de databaseserver.
/database: <naam> Hiermee geeft u de databasecatalogus op de server.
/user: <name> Hiermee geeft u de aanmeldingsgebruikers-id op. Standaardwaarde: Gebruik Windows-verificatie.
/password: <wachtwoord> Hiermee geeft u het aanmeldingswachtwoord op. Standaardwaarde: Gebruik Windows-verificatie.
/conn: <verbindingsreeks> Hiermee geeft u database verbindingsreeks. Kan niet worden gebruikt met de opties /server, /database, /gebruiker of /password .

Neem de bestandsnaam niet op in de verbindingsreeks. Voeg in plaats daarvan de bestandsnaam toe aan de opdrachtregel als invoerbestand. De volgende regel geeft bijvoorbeeld 'c:\northwnd.mdf' op als invoerbestand: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".
/time-out: <seconden> Hiermee geeft u een time-outwaarde op wanneer SqlMetal toegang heeft tot de database. Standaardwaarde: 0 (dat wil gezegd, geen tijdslimiet).

Extractieopties

Optie Omschrijving
/Weergaven Hiermee worden databaseweergaven geëxtraheerd.
/Functies Extraheert databasefuncties.
/sprocs Extraheert opgeslagen procedures.

Uitvoeropties

Optie Omschrijving
/dbml [:file] Verzendt uitvoer als .dbml. Kan niet worden gebruikt met de optie /map .
/code [:file] Hiermee verzendt u uitvoer als broncode. Kan niet worden gebruikt met de optie /dbml .
/map [:file] Hiermee wordt een XML-toewijzingsbestand gegenereerd in plaats van kenmerken. Kan niet worden gebruikt met de optie /dbml .

Diversen

Optie Omschrijving
/language: <taal> Hiermee geeft u de broncodetaal op.

Geldige <taal>: vb, csharp.

Standaardwaarde: Afgeleid van extensie op de bestandsnaam van de code.
/naamruimte: <naam> Hiermee geeft u de naamruimte van de gegenereerde code. Standaardwaarde: geen naamruimte.
/context: <type> Hiermee geeft u de naam van de gegevenscontextklasse op. Standaardwaarde: Afgeleid van databasenaam.
/entitybase: <type> Hiermee geeft u de basisklasse van de entiteitsklassen in de gegenereerde code. Standaardwaarde: Entiteiten hebben geen basisklasse.
/pluralize Hiermee worden klassen- en ledennamen automatisch meervoudsd of singularizes.

Deze optie is alleen beschikbaar in de Amerikaanse versie.
/serialisatie: <optie> Genereert serialiseerbare klassen.

Geldige <optie>: Geen, Unidirectioneel. Standaardwaarde: Geen.

Zie Serialisatie voor meer informatie.

Invoerbestand

Optie Omschrijving
<invoerbestand> Hiermee geeft u een SQL Server Express-.mdf-bestand, een SQL Server Compact 3.5 SDF-bestand of een .dbml-tussenbestand.

Opmerkingen

SqlMetal-functionaliteit omvat eigenlijk twee stappen:

  • De metagegevens van de database extraheren in een .dbml-bestand.

  • Een code-uitvoerbestand genereren.

    Met behulp van de juiste opdrachtregelopties kunt u Visual Basic- of C#-broncode produceren, of u kunt een XML-toewijzingsbestand maken.

Als u de metagegevens wilt extraheren uit een .mdf bestand, moet u de naam van het .mdf bestand opgeven na alle andere opties.

Als er geen /server is opgegeven, wordt ervan uitgegaan dat localhost/sqlexpress .

Microsoft SQL Server 2005 genereert een uitzondering als aan een of meer van de volgende voorwaarden wordt voldaan:

  • SqlMetal probeert een opgeslagen procedure te extraheren die zichzelf aanroept.

  • Het nestniveau van een opgeslagen procedure, functie of weergave overschrijdt 32.

    SqlMetal onderschept deze uitzondering en rapporteert deze als waarschuwing.

Als u een naam voor het invoerbestand wilt opgeven, voegt u de naam toe aan de opdrachtregel als invoerbestand. Het opnemen van de bestandsnaam in de verbindingsreeks (met behulp van de optie /conn) wordt niet ondersteund.

Voorbeelden

Genereer een .dbml-bestand met geëxtraheerde SQL-metagegevens:

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

Genereer een DBML-bestand met geëxtraheerde SQL-metagegevens uit een .mdf-bestand met behulp van SQL Server Express:

sqlmetal /dbml:mymeta.dbml mydbfile.mdf

Genereer een .dbml-bestand met geëxtraheerde SQL-metagegevens uit SQL Server Express:

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

Broncode genereren op basis van een DBML-metagegevensbestand:

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

Rechtstreeks broncode genereren op basis van SQL-metagegevens:

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

Notitie

Wanneer u de optie /pluralize gebruikt met de voorbeelddatabase Northwind, moet u rekening houden met het volgende gedrag. Wanneer SqlMetal rijnamen voor tabellen maakt, zijn de tabelnamen enkelvoud. DataContext Wanneer de tabeleigenschappen voor tabellen maakt, zijn de tabelnamen meervoud. Toevallig zijn de tabellen in de northwind-voorbeelddatabase al meervoud. Daarom ziet u dat onderdeel niet werken. Hoewel het gebruikelijk is om databasetabellen enkelvoud te noemen, is het ook gebruikelijk in .NET om verzamelingen meervoud te noemen.

Zie ook