SqlMetal.exe (Narzędzie generowania kodu)

Narzędzie wiersza polecenia SqlMetal generuje kod i mapowanie składnika LINQ to SQL .NET Framework. Stosując opisane w dalszej części tego tematu opcje, można za pomocą programu SqlMetal wykonać kilka różnych akcji, takich jak:

  • Na podstawie bazy danych — generowanie kodu źródłowego i atrybutów mapowania lub pliku mapowania.

  • Na podstawie bazy danych — generowanie pliku języka Intermediate Database Markup Language (dbml) na potrzeby dostosowywania.

  • Na podstawie pliku dbml — generowanie kodu i atrybutów mapowania lub pliku mapowania.

To narzędzie jest instalowane automatycznie z programem Visual Studio 2019 i starszymi wersjami. Domyślnie plik znajduje się w folderze %ProgramFiles%\Microsoft SDKs\Windows[version]\bin. Jeśli nie zainstalujesz programu Visual Studio, możesz również pobrać plik SQLMetal, pobierając zestaw Windows SDK.

Uwaga

Deweloperzy korzystający z programu Visual Studio mogą również używać Object Relational Designer do generowania klas jednostek. Podejście z użyciem wiersza polecenia dobrze sprawdza się w przypadku dużych baz danych. Program SqlMetal to narzędzie wiersza polecenia, więc można użyć go w procesie kompilacji.

Aby uruchomić to narzędzie, użyj wiersza polecenia dla deweloperów programu Visual Studio lub programu Visual Studio Developer PowerShell. W wierszu polecenia wprowadź następujące polecenie:

sqlmetal [options] [<input file>]  

Opcje

Aby wyświetlić najbardziej bieżącą listę opcji, wpisz sqlmetal /? w wierszu polecenia z zainstalowanej lokalizacji.

Opcje połączenia

Opcja Opis
/server:<name> Określa nazwę serwera bazy danych.
/database:<name> Określa wykaz baz danych na serwerze.
/user:<name> Określa identyfikator użytkownika logowania. Wartość domyślna: Użyj uwierzytelniania systemu Windows.
/password:<password> Określa hasło logowania. Wartość domyślna: Użyj uwierzytelniania systemu Windows.
/conn:<parametry> połączenia Określa parametry połączenia z bazą danych. Nie można używać z opcjami /server, /database, /user lub /password .

W parametrach połączenia nie można umieszczać nazwy pliku. Zamiast tego należy określić nazwę pliku w wierszu polecenia jako plik wejściowy. Na przykład następujący wiersz określa "c:\northwnd.mdf" jako plik wejściowy: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".
/timeout:<seconds> Określa wartość limitu czasu używaną, gdy program SqlMetal uzyskuje dostęp do bazy danych. Wartość domyślna: 0 (czyli brak limitu czasu).

Opcje wyodrębniania

Opcja Opis
/Widoki Wyodrębnia widoki bazy danych.
/Funkcje Wyodrębnia funkcje bazy danych.
/sprocs Wyodrębnia procedury składowane.

Opcje danych wyjściowych

Opcja Opis
/dbml[:file] Wysyła dane wyjściowe w postaci pliku dbml. Nie można użyć opcji /map .
/code[:file] Wysyła dane wyjściowe w postaci kodu źródłowego. Nie można używać z opcją /dbml .
/map[:file] Generuje plik mapowania XML zamiast atrybutów. Nie można używać z opcją /dbml .

Różne

Opcja Opis
/language:<language> Określa język kodu źródłowego.

Prawidłowy <język>: vb, csharp.

Wartość domyślna: pochodzi z rozszerzeniem nazwy pliku kodu.
/namespace:<name> Określa przestrzeń nazw wygenerowanego kodu. Wartość domyślna: brak przestrzeni nazw.
/context:<type> Określa nazwę klasy kontekstu danych. Wartość domyślna: pochodzi z nazwy bazy danych.
/entitybase:<type> Określa klasę bazową klas obiektów w generowanym kodzie. Wartość domyślna: obiekty nie mają klasy bazowej.
/pluralize Automatycznie zmienia nazwy klas i składowych na liczbę mnogą lub pojedynczą.

Ta opcja jest dostępna tylko w wersji angielskiej (USA).
/serialization:<option> Generuje klasy, które można serializować.

Prawidłowa <opcja>: Brak, Jednokierunkowa. Wartość domyślna: None.

Aby uzyskać więcej informacji, zobacz Serializacja.

Plik wejściowy

Opcja Opis
<plik wejściowy> Określa plik SQL Server Express .mdf, plik SQL Server Compact 3.5 .sdf lub plik pośredni .dbml.

Uwagi

Działanie programu SqlMetal w rzeczywistości obejmuje wykonanie dwóch kroków:

  • Wyodrębnienie metadanych bazy danych do pliku dbml.

  • Wygenerowanie pliku wyjściowego z kodem.

    Korzystając z odpowiednich opcji wiersza polecenia, można utworzyć kod źródłowy języka Visual Basic lub C# albo utworzyć plik mapowania XML.

Aby wyodrębnić metadane z pliku mdf, należy określić nazwę pliku mdf po wszystkich innych opcjach.

Jeśli nie określono /server , zakłada się, że localhost/sqlexpress .

Program Microsoft SQL Server 2005 zgłasza wyjątek, jeśli spełniony jest co najmniej jeden z następujących warunków:

  • Program SqlMetal próbuje wyodrębnić procedurę składowaną, którą sam wywołuje.

  • Poziom zagnieżdżenia procedury składowanej, funkcji lub widoku przekracza 32.

    Program SqlMetal przechwytuje ten wyjątek i zgłasza go jako ostrzeżenie.

Aby określić nazwę pliku wejściowego, należy dodać ją do wiersza polecenia jako plik wejściowy. Dołączenie nazwy pliku w parametrach połączenia (przy użyciu opcji /conn ) nie jest obsługiwane.

Przykłady

Generuje plik dbml zawierający wyodrębnione metadane SQL:

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

Generuje plik dbml zawierający metadane SQL wyodrębnione z pliku mdf przy użyciu programu SQL Server Express:

sqlmetal /dbml:mymeta.dbml mydbfile.mdf

Generuje plik dbml zawierający metadane SQL wyodrębnione z programu SQL Server Express:

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

Generuje kod źródłowy na podstawie pliku metadanych dbml:

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

Generuje kod źródłowy bezpośrednio na podstawie metadanych SQL:

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

Uwaga

Jeśli używasz opcji /pluralize z przykładową bazą danych Northwind, zwróć uwagę na następujące zachowanie. Gdy program SqlMetal tworzy nazwy tabel typu wiersz, nazwy tabel mają liczbę pojedynczą. Gdy tworzy DataContext właściwości tabel, nazwy tabel są mnogią. Przypadkowo nazwy tabel w przykładowej bazie danych Northwind mają już liczbę mnogą. Dlatego też nie widać działania tej części opcji. Popularną praktyką jest nadawanie tabelom w bazie danych nazw w liczbie pojedynczej, ale równie popularną praktyką na platformie .NET jest nadawanie kolekcjom nazw w liczbie mnogiej.

Zobacz też