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


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

Обновлен: Ноябрь 2007

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

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

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

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

По умолчанию файл SQLMetal располагается в папке drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin.

Bb386987.alert_note(ru-ru,VS.90).gifПримечание.

Разработчики, использующие 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 /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

Bb386987.alert_note(ru-ru,VS.90).gifПримечание.

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

См. также

Задачи

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

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

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

Ссылки

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