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.