SqlMetal.exe (средство создания кода)
Средство командной строки SqlMetal создает код и сопоставление для компонента LINQ to SQL платформы .NET Framework. С помощью описанных ниже параметров можно настраивать SqlMetal на выполнение различных действий, включая следующие.
Создание исходного кода и атрибутов сопоставления или файла сопоставления на основе базы данных.
Создание DBLM-файла для настройки на основе базы данных.
Создание кода и атрибутов сопоставления или файла сопоставления на основе DBML-файла.
Это средство автоматически устанавливается вместе с Visual Studio 2019 и более ранними версиями. По умолчанию файл находится в папке %ProgramFiles%\Microsoft SDKs\Windows[version]\bin. Если вы не установили Visual Studio, вы также можете получить файл SQLMetal, скачав пакет WINDOWS SDK.
Примечание
Разработчики, работающие в Visual Studio, также могут использовать реляционный конструктор объектов для создания классов сущностей. Командная строка удобна при работе с большими базами данных. Поскольку SqlMetal представляет собой программу командной строки, ее можно использовать в процессе построения.
Для запуска этого средства используйте Командную строку разработчика или PowerShell для разработчиков в Visual Studio. В командной строке введите следующую команду:
sqlmetal [options] [<input file>]
Параметры
Чтобы просмотреть текущий список параметров, в командной строке введите sqlmetal /?
в каталоге установки.
Параметры подключения
Параметр | Описание |
---|---|
/server:<name> | Задает имя сервера базы данных. |
/database:<name> | Задает каталог базы данных на сервере. |
/user:<name> | Задает идентификатор пользователя для входа. Значение по умолчанию: использование проверки подлинности Windows. |
/password:<password> | Задает пароль для входа. Значение по умолчанию: использование проверки подлинности Windows. |
/conn:<строка подключения> | Задает строку подключения к базе данных. Нельзя использовать с параметрами /server, /database, /userили /password . В строке подключения не следует указывать имя файла. Вместо этого добавьте имя файла в командную строку в качестве входного файла. Например, в следующей строке указывается входной файл "c:\northwnd.mdf": sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf" . |
/timeout:<seconds> | Задает время ожидания для доступа SqlMetal к базе данных. Значение по умолчанию: 0 (то есть время не ограничено). |
Параметры извлечения
Параметр | Описание |
---|---|
/views | Извлекает представления базы данных. |
/functions | Извлекает функции базы данных. |
/sprocs | Извлекает хранимые процедуры. |
Параметры вывода
Параметр | Описание |
---|---|
/dbml[:file] | Направляет вывод в DBML-файл. Не может использоваться с параметром /map . |
/code[:file] | Направляет вывод в файл исходного кода. Не может использоваться с параметром /dbml . |
/map[:file] | Создает XML-файл сопоставления вместо атрибутов. Не может использоваться с параметром /dbml . |
Прочее
Параметр | Описание |
---|---|
/language:<language> | Задает язык исходного кода. Допустимый <язык>: vb, csharp. Значение по умолчанию: определяется по расширению имени файла кода. |
/namespace:<name> | Задает пространство имен сгенерированного кода. Значение по умолчанию: пространство имен не определяется. |
/context:<type> | Задает имя класса контекста данных. Значение по умолчанию: определяется по имени базы данных. |
/entitybase:<type> | Задает базовый класс для классов сущностей в сгенерированном коде. Значение по умолчанию: базовый класс для сущностей не определяется. |
/pluralize | Автоматически преобразует имена классов и членов в форму множественного или единственного числа. Этот вариант доступен только в английской версии (США). |
/serialization:<option> | Создает сериализуемые классы. Допустимый <параметр>: Нет, Однонаправленный. Значение по умолчанию: Отсутствует. Дополнительные сведения см. в разделе Сериализация. |
Входной файл
Параметр | Описание |
---|---|
<входной файл> | Задает 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 принято присваивать имена во множественном числе.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по