Поделиться через


SqlMetal.exe (средство создания кода)

Средство командной строки SqlMetal создает код и сопоставление компонента LINQ to SQL платформа .NET Framework. С помощью описанных ниже параметров можно настраивать SqlMetal на выполнение различных действий, включая следующие.

  • Создание исходного кода и атрибутов сопоставления или файла сопоставления на основе базы данных.

  • Создание DBLM-файла для настройки на основе базы данных.

  • Создание кода и атрибутов сопоставления или файла сопоставления на основе DBML-файла.

Это средство автоматически устанавливается с Visual Studio 2019 и более ранними версиями. По умолчанию файл находится в папке %ProgramFiles%\Microsoft SDKs\Windows[version]\bin. Если вы не устанавливаете Visual Studio, вы также можете получить SQLMetal-файл, скачав пакет SDK для Windows.

Примечание.

Разработчики, работающие в Visual Studio, также могут использовать реляционный конструктор объектов для создания классов сущностей. Командная строка удобна при работе с большими базами данных. Поскольку SqlMetal представляет собой программу командной строки, ее можно использовать в процессе построения.

Для запуска этого средства используйте Командную строку разработчика или PowerShell для разработчиков в Visual Studio. В командной строке введите следующую команду:

sqlmetal [options] [<input file>]  

Параметры

Чтобы просмотреть текущий список параметров, в командной строке введите sqlmetal /? в каталоге установки.

Параметры соединения

Вариант Описание
/server: <имя> Задает имя сервера базы данных.
/database: <имя> Задает каталог базы данных на сервере.
/user: <имя> Указывает идентификатор пользователя входа. Значение по умолчанию: используйте проверка подлинности Windows.
/password: <пароль> Задает пароль для входа. По умолчанию используется аутентификация Windows.
/conn: <строка подключения> Задает строку подключения к базе данных. Нельзя использовать с параметрами /server, /database, /userили /password .

В строке подключения не следует указывать имя файла. Вместо этого добавьте имя файла в командную строку в качестве входного файла. Например, в следующей строке указывается входной файл "c:\northwnd.mdf": sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".
/timeout: <секунды> Задает время ожидания для доступа SqlMetal к базе данных. Значение по умолчанию: 0 (то есть время не ограничено).

Параметры извлечения

Вариант Описание
/views Извлекает представления базы данных.
/functions Извлекает функции базы данных.
/sprocs Извлекает хранимые процедуры.

Параметры вывода

Вариант Описание
/dbml [:файл] Направляет вывод в DBML-файл. Не может использоваться с параметром /map .
/code [:файл] Направляет вывод в файл исходного кода. Не может использоваться с параметром /dbml .
/map [:файл] Создает XML-файл сопоставления вместо атрибутов. Не может использоваться с параметром /dbml .

Разное

Вариант Описание
/language: <язык> Задает язык исходного кода.

Допустимый <язык>: vb, csharp.

Значение по умолчанию: определяется по расширению имени файла кода.
/namespace: <name> Задает пространство имен сгенерированного кода. Значение по умолчанию: пространство имен не определяется.
/context: <тип> Задает имя класса контекста данных. Значение по умолчанию: определяется по имени базы данных.
/entitybase: <тип> Задает базовый класс для классов сущностей в сгенерированном коде. Значение по умолчанию: базовый класс для сущностей не определяется.
/pluralize Автоматически преобразует имена классов и членов в форму множественного или единственного числа.

Этот вариант доступен только в английской версии (США).
/serialization: <option> Создает сериализуемые классы.

Допустимый <параметр>: None, Unidirectional. Значение по умолчанию: None.

Дополнительные сведения см. в разделе Сериализация.

Входной файл

Вариант Описание
<входной файл> Задает MDF-файл SQL Server, экспресс-выпуск, SDF-файл SQL Server Compact 3.5 или промежуточный DBML-файл.

Замечания

Функции SqlMetal фактически выполняются в два этапа.

  • Метаданные базы данных извлекаются в DBML-файл.

  • Создается выходной файл кода.

    Используя соответствующие параметры командной строки, можно получать исходный код Visual Basic или C# либо XML-файл сопоставления.

Чтобы извлечь метаданные из MDF-файла, необходимо указать его имя после всех остальных параметров.

Если не /server указан, предполагается localhost/sqlexpress .

Microsoft SQL Server 2005 выдает исключение в следующих случаях:

  • SqlMetal пытается извлечь хранимую процедуру, вызывающую саму себя.

  • Уровень вложенности хранимой процедуры, функции или представления превышает 32 уровня.

    SqlMetal перехватывает это исключение и сообщает о нем в виде предупреждения.

Чтобы указать имя входного файла, добавьте имя в командную строку в качестве входного файла. Включение имени файла в строку подключения (параметром /conn ) не поддерживается.

Примеры

Создание DBML-файла, содержащего извлеченные метаданные SQL.

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

Создание DBML-файла, содержащего извлеченные метаданные SQL из MDF-файла, с помощью SQL Server, экспресс-выпуск.

sqlmetal /dbml:mymeta.dbml mydbfile.mdf

Создание DBML-файла, содержащего извлеченные метаданные SQL из SQL Server, экспресс-выпуск.

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

Создание исходного кода из DBML-файла метаданных.

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

Создание исходного кода непосредственно из метаданных SQL.

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

Примечание.

При использовании параметра /pluralize вместе с учебной базой данных Northwind необходимо иметь в виду следующее. Когда SqlMetal создает имена типов строк для таблиц, имена таблиц представляются в единственном числе. При создании свойств DataContext для таблиц имена таблиц представляются во множественном числе. Однако таблицы в учебной базе данных Northwind уже имеют имена в форме множественного числа. Поэтому данная часть процедуры не будет иметь видимого эффекта. Если таблицам базы данных принято присваивать имена в единственном числе, то коллекциям .NET принято присваивать имена во множественном числе.

См. также