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 принято присваивать имена во множественном числе.