Sdílet prostřednictvím


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

Nástroj příkazového řádku SqlMetal generuje kód a mapování pro komponentu LINQ to SQL 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 také získat soubor SQLMetal stažením sady Windows SDK.

Poznámka:

Vývojáři, kteří používají 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 seznam nejaktuálnějších možností, zadejte sqlmetal /? 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: <název> Určuje katalog databází na serveru.
/user: <jméno> Určuje PŘIHLAŠOVACÍ ID uživatele. Výchozí hodnota: Použijte ověřování systému Windows.
/password: <heslo> 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: <sekundy> 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
/pohledy 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 parametrem /dbml .
/map [:file] Generuje soubor mapování XML namísto atributů. Nelze použít s parametrem /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: <typ> Určuje název třídy datového kontextu. Výchozí hodnota: Odvozen od názvu databáze.
/entitybase: <typ> 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.
/pluralizace 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).
/serializace: <možnost> Generuje serializovatelné třídy.

Platná <možnost>: None, Unidirectional. Výchozí hodnota: Žádný.

Další informace naleznete v tématu Serializace.

Vstupní soubor

Možnost Popis
<vstupní soubor> Určuje soubor SQL Server Express .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í vhodných možností příkazového řádku můžete vytvořit zdrojový kód jazyka Visual Basic nebo C# nebo 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 parametr /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í řetězec (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 mydbfile.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:

Pokud použijete možnost /pluralize s ukázkovou databází Northwind, poznamenejte si následující chování. Když SqlMetal vytváří názvy řádků pro tabulky, názvy tabulek jsou v jednotném čísle. Při vytváření DataContext vlastností pro tabulky 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é