SqlMetal.exe (nástroj pro vytváření kódu)

Nástroj příkazového řádku SqlMetal generuje kód a mapování pro LINQ to SQL komponentu rozhraní .NET Framework. Použitím možností uvedených dále v tomto tématu můžete dát nástroji SqlMetal pokyn, aby provedl několik různých úkonů, které zahrnují následující:

  • Vygenerování zdrojového kódu a atributů mapování nebo souboru mapování z databáze.

  • Vygenerování přechodného souboru .dbml (database markup language) z databáze za účelem přizpůsobení.

  • Vygenerování zdrojového kódu a atributů mapování nebo souboru mapování ze souboru .dbml.

Tento nástroj se automaticky nainstaluje se sadou Visual Studio 2019 a staršími verzemi. Ve výchozím nastavení se soubor nachází ve složce %ProgramFiles%\Microsoft SDKs\Windows[version]\bin. Pokud sadu Visual Studio nenainstalujete, můžete soubor SQLMetal získat také stažením sady Windows SDK.

Poznámka

Vývojáři, kteří používají sadu Visual Studio, mohou také použít Návrhář relací objektů ke generování tříd entit. Metoda využívající příkazový řádek je vhodná u velkých databází. Protože SqlMetal je nástroj příkazového řádku, můžete ho použít v procesu sestavení.

Ke spuštění nástroje použijte Visual Studio Developer Command Prompt nebo Visual Studio Developer PowerShell. Na příkazovém řádku zadejte následující příkaz:

sqlmetal [options] [<input file>]  

Možnosti

Pokud chcete zobrazit aktuální seznam možností, zadejte sqlmetal /? na příkazový řádek z nainstalovaného umístění.

Možnosti připojení

Možnost Popis
/server:<název> Určuje název databázového serveru.
/database:<name> Určuje katalog databází na serveru.
/user:<name> Určuje ID uživatele přihlášení. Výchozí hodnota: Použijte ověřování systému Windows.
/password:<password> Určuje heslo pro přihlášení. Výchozí hodnota: Použít ověřování systému Windows.
/conn:<připojovací řetězec> Určuje připojovací řetězec databáze. Nelze použít s možnostmi /server, /database, /user nebo /password .

Nezahrnujte název souboru do připojovacího řetězce. Místo toho přidejte název souboru do příkazového řádku jako vstupní soubor. Například následující řádek určuje "c:\northwnd.mdf" jako vstupní soubor: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".
/timeout:<seconds> Určuje hodnotu časového limitu při přístupu SqlMetal k databázi. Výchozí hodnota: 0 (to znamená žádný časový limit).

Možnosti extrakce

Možnost Popis
/Zobrazení Extrahuje zobrazení databáze.
/Funkce Extrahuje funkce databáze.
/sprocs Extrahuje uložené procedury.

Možnosti výstupu

Možnost Popis
/dbml[:file] Odešle výstup jako .dbml. Nelze použít s možností /map .
/code[:file] Odešle výstup jako zdrojový kód. Nelze použít s možností /dbml .
/map[:file] Generuje soubor mapování XML namísto atributů. Nelze použít s možností /dbml .

Různé

Možnost Popis
/language:<language> Určuje jazyk zdrojového kódu.

Platný <jazyk>: vb, csharp.

Výchozí hodnota: Odvozeno z přípony názvu souboru kódu.
/namespace:<name> Určuje obor názvů generovaného kódu. Výchozí hodnota: Žádný obor názvů.
/context:<type> Určuje název třídy datového kontextu. Výchozí hodnota: Odvozen od názvu databáze.
/entitybase:<type> Určuje základní třídu z tříd entit v generovaném kódu. Výchozí hodnota: Entity nemají žádnou základní třídu.
/pluralize Automaticky převádí názvy tříd a členů do množného nebo jednotného čísla.

Tato možnost je dostupná pouze v anglické verzi (USA).
/serialization:<option> Generuje serializovatelné třídy.

Platná <možnost>: Žádná, Jednosměrná. Výchozí hodnota: Žádný.

Další informace naleznete v tématu Serializace.

Vstupní soubor

Možnost Popis
<vstupní soubor> Určuje SQL Server Express soubor .mdf, soubor SQL Server Compact 3.5 .sdf nebo zprostředkující soubor .dbml.

Poznámky

Funkce SqlMetal ve skutečnosti probíhá ve dvou krocích:

  • Extrahování metadat databáze do souboru .dbml.

  • Generování výstupního souboru s kódem.

    Pomocí příslušných možností příkazového řádku můžete vytvořit zdrojový kód jazyka Visual Basic nebo C# nebo můžete vytvořit soubor mapování XML.

Chcete-li extrahovat metadata ze souboru .mdf, musíte zadat název souboru .mdf za všemi ostatními možnostmi.

Pokud není zadán / server , předpokládá se localhost/sqlexpress .

Microsoft SQL Server 2005 vyvolá výjimku, pokud jsou splněny některé z následujících podmínek:

  • SqlMetal se pokusí extrahovat uloženou proceduru, která volá sama sebe.

  • Úroveň vnoření uložené procedury, funkce nebo zobrazení je vyšší než 32.

    SqlMetal tuto výjimku zachytí a ohlásí ji jako varování.

Chcete-li zadat název vstupního souboru, přidejte název souboru do příkazového řádku jako vstupní soubor. Zahrnutí názvu souboru do připojovacího řetězce (pomocí možnosti /conn ) se nepodporuje.

Příklady

Vygenerování souboru .dbml obsahujícího extrahovaná metadata SQL:

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

Vygenerování souboru .dbml obsahujícího extrahovaná metadata SQL ze souboru .mdf pomocí SQL Server Express:

sqlmetal /dbml:mymeta.dbml soubor.mdf

Vygenerování souboru .dbml obsahujícího extrahovaná metadata SQL z SQL Server Express:

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

Vygenerování zdrojového kódu ze souboru metadat .dbml:

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

Vygenerování zdrojového kódu přímo z metadat SQL:

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

Poznámka

Při použití možnosti /pluralize s ukázkovou databází Northwind si všimněte následujícího chování. Když SqlMetal vytváří názvy řádků pro tabulky, názvy tabulek jsou v jednotném čísle. Při vytváření DataContext vlastností tabulek jsou názvy tabulek v množném čísle. Tabulky v ukázkové databázi Northwind jsou shodou okolností již v množném čísle. Proto neuvidíte, jak tato část funguje. Přestože jsou názvy tabulek databáze zpravidla zapisovány v jednotném čísle, v rozhraní .NET je rovněž obvyklé pojmenovávání kolekcí v množném čísle.

Viz také