Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Средство командной строки 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 принято присваивать имена во множественном числе.