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

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

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

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

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

Файл SQLMetal входит в состав пакета SDK Windows, устанавливаемого с Visual Studio. По умолчанию файл располагается в папке drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin. Если установка Visual Studio не выполнялась, файл SQLMetal можно получить, загрузив пакет SDK Windows.

ПримечаниеПримечание

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

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:<имя>

Задает пространство имен сгенерированного кода. Значение по умолчанию: пространство имен не определяется.

/context:<тип>

Задает имя класса контекста данных. Значение по умолчанию: определяется по имени базы данных.

/entitybase:<тип>

Задает базовый класс для классов сущностей в сгенерированном коде. Значение по умолчанию: базовый класс для сущностей не определяется.

/pluralize

Автоматически преобразует имена классов и членов в форму множественного или единственного числа.

Этот параметр доступен только в версии на английском языке Английская версия.

/serialization:<параметр>

Создает сериализуемые классы.

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

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

Входной файл

Параметр

Описание

<input file>

Задает 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 Express:

sqlmetal /dbml:mymeta.dbml mydbfile.mdf

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

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

См. также

Задачи

Как создать объектную модель на языке Visual Basic или C# (LINQ to SQL)

Ссылки

Справочные сведения о внешнем сопоставлении (LINQ to SQL)

Основные понятия

Создание кода в LINQ to SQL