Средство создания кода (SqlMetal.exe)
Обновлен: Ноябрь 2007
Программа командной строки SqlMetal генерирует код и сопоставление для компонента LINQ to SQL платформы .NET Framework. С помощью параметров, описанных ниже, можно настраивать SqlMetal на выполнение различных действий, включая следующие:
Создание исходного кода и атрибутов сопоставления или файла сопоставления на основе базы данных.
Создание файла промежуточного языка разметки базы данных (.dbml) для настройки на основе базы данных.
Создание кода и атрибутов сопоставления или файла сопоставления на основе DBML-файла.
По умолчанию файл SQLMetal располагается в папке drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin.
Примечание. |
---|
Разработчики, использующие 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
Примечание. |
---|
При использовании параметра /pluralize вместе с учебной базой данных «Northwind» необходимо иметь в виду следующее. Когда SqlMetal создает имена типов строк для таблиц, имена таблиц представляются в единственном числе. При создании свойств DataContext для таблиц имена таблиц представляются во множественном числе. Однако таблицы в учебной базе данных «Northwind» уже имеют имена в форме множественного числа. Поэтому данная часть процедуры не будет иметь видимого эффекта. Если таблицам базы данных принято присваивать имена в единственном числе, то коллекциям .NET принято присваивать имена во множественном числе. |
См. также
Задачи
Как создать модель объектов на языке Visual Basic или C# (LINQ to SQL)