Общие коллекции схем

Применимо: платформа .NET Framework .NET Standard

Скачать ADO.NET

Общие коллекции схем реализуются каждым из управляемых поставщиков .NET. Можно запросить управляемый поставщик .NET для определения списка поддерживаемых коллекций схем, вызвав метод GetSchema без аргументов или с именем коллекции схем MetaDataCollections. Этот метод возвращает объект DataTable со списком поддерживаемых коллекций схем, количеством поддерживаемых ограничений и количеством используемых частей идентификатора. Данные коллекции описывают все требуемые столбцы. Поставщики могут свободно добавлять дополнительные столбцы, если это необходимо. Например, поставщик данных Microsoft SqlClient для SQL Server добавляет ParameterName в коллекцию ограничений.

Если поставщик не может определить значение требуемого столбца, то он возвращает значение NULL.

Дополнительные сведения об использовании методов GetSchema см. в статье Метод GetSchema и коллекции схем.

Коллекция схем MetaDataCollections

Эта коллекция схем предоставляет сведения обо всех коллекциях схем, поддерживаемых поставщиком, который используется для подключения к базе данных.

ColumnName Тип данных Description
CollectionName string Имя коллекции, передаваемое методу GetSchema для возврата коллекции.
NumberOfRestrictions int Число ограничений, которые могут быть указаны для коллекции.
NumberOfIdentifierParts int Число частей в составном имени идентификатора и (или) объекта базы данных. Например, в SQL Server значение будет равно 3 для таблиц и 4 для столбцов.

Коллекция схем DataSourceInformation

Эта коллекция схем предоставляет сведения об источнике данных, к которому подключен поставщик данных Microsoft SqlClient для SQL Server.

ColumnName Тип данных Description
CompositeIdentifierSeparatorPattern string Регулярное выражение служит для согласования составных разделителей в составном идентификаторе. Например, \. (для SQL Server).

Обычно составные идентификаторы используются в качестве имени объекта базы данных, например pubs.dbo.authors или pubs@dbo.authors.

Для SQL Server следует использовать регулярное выражение \..
DataSourceProductName string Имя продукта, к которому обращается поставщик, например "SQLServer".
DataSourceProductVersion string Версия продукта, доступ к которому обеспечивается поставщиком, в собственном формате источников данных, а не в формате Microsoft.

В некоторых случаях DataSourceProductVersion и DataSourceProductVersionNormalized будут иметь одно и то же значение.
DataSourceProductVersionNormalized string Нормализованная версия для источника данных, позволяющая провести ее сравнение с помощью функции String.Compare(). Этот формат согласован для всех версий поставщика, чтобы предотвратить сортировку версии 10 с версии 1 до версии 2.

Например, для SQL Server используется обычный формат Майкрософт: nn.nn.nnnn.

В некоторых случаях DataSourceProductVersion и DataSourceProductVersionNormalized будут иметь одно и то же значение.
GroupByBehavior GroupByBehavior Задает связь между столбцами в предложении GROUP BY и неагрегатными столбцами в списке выбора.
IdentifierPattern string Регулярное выражение, которое согласуется с идентификатором или имеет совпадающее с ним значение. Например, [A-Za-z0-9_#$].
IdentifierCase IdentifierCase Определяет, обрабатываются ли идентификаторы, не заключенные в кавычки, с учетом регистра.
OrderByColumnsInSelect bool Указывает, должны ли столбцы в предложении ORDER BY быть в списке выбора. Значение true указывает, что они должны находиться в списке выбора. Значение false указывает, что они не должны находиться в списке выбора.
ParameterMarkerFormat string Строка форматирования, представляющая способ форматирования параметра.

Если именованные параметры поддерживаются источником данных, первый местозаполнитель в этой строке должен находиться в позиции форматирования имени параметра.

Например, если источник данных ожидает получение параметров с именем и префиксом :, эта строка будет :{0}. При форматировании этого параметра с именем p1 результирующей строкой будет :p1.

Если источник данных ожидает получения параметров с префиксом @, а имена уже содержат этот префикс, строка будет {0}, а результатом форматирования параметра с именем @p1 будет @p1.

Для источников данных, в которых вместо именованных параметров ожидается использование символа ?, строка форматирования может указываться в виде ?, что приводит к пропуску имени параметра.
ParameterMarkerPattern string Регулярное выражение, соответствующее маркеру параметра. Оно будет иметь значение, совпадающее с именем параметра (если таковое имеется).

Например, если поддерживаются именованные параметры с начальным символом @, включаемым в имя параметра, выражение будет иметь вид (\@[A-Za-z0-9_$#]*).

Но, если поддерживаются именованные параметры с начальным символом :, не являющимся частью имени параметра, выражение будет иметь вид :([A-Za-z0-9_$#]\*).

Если источник данных не поддерживает именованные параметры, выражение будет иметь вид ?.
ParameterNameMaxLength int Максимальная длина имени параметра в символах. В среде Visual Studio принято предположение, что в случае поддержки имен параметров минимальным значением максимальной длины будет 30 символов.

Если источник данных не поддерживает именованные параметры, это свойство вернет ноль.
ParameterNamePattern string Регулярное выражение, соответствующее действительным именам параметров. Разные источники данных имеют разные правила использования символов для имен параметров.

Visual Studio ожидает, что, если имена параметров поддерживаются, символы \p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd} будут минимальным поддерживаемым набором символов, допустимым для имен параметров.
QuotedIdentifierPattern string Регулярное выражение, соответствующее идентификатору, заключенному в кавычки, и имеющее значение идентификатора без кавычек. Например, если в источнике данных используются двойные кавычки для определения идентификаторов с разделителем, выражение будет иметь вид (([^\\"]\|\\"\\")*).
QuotedIdentifierCase IdentifierCase Определяет, обрабатываются ли заключенные в кавычки идентификаторы с учетом регистра.
StatementSeparatorPattern string Регулярное выражение, соответствующее разделителю инструкций.
StringLiteralPattern string Регулярное выражение, соответствующее строковому литералу, и имеющее одинаковое с ним значение. Например, если в источнике данных используются одинарные кавычки для определения строк, выражение будет иметь вид ('([^']\|'')*').
SupportedJoinOperators SupportedJoinOperators Указывает, какие типы инструкций соединения SQL поддерживаются источником данных.

DataTypes

Эта коллекция схем предоставляет сведения о типах данных, поддерживаемых базой данных, к которой в данный момент подключен поставщик.

ColumnName Тип данных Description
TypeName string Имя типа данных, связанного с поставщиком.
ProviderDbType int Зависящее от поставщика значение типа, которое следует использовать при указании типа параметра. Например, SqlDbType.Money.
ColumnSize long Длина нечислового столбца или параметра. Это значение относится к максимальному значению или длине, как определено для этого типа поставщиком.

Для символьных данных это значение представляет собой максимальное значение или длину в единицах, как определено источником данных.

Для типов данных, определяющих дату и время, это значение является длиной представления строки (с учетом максимально допустимой точности доли секунды).

Для числового типа данных это значение является верхней границей максимальной точности типа данных.
CreateFormat string Строка форматирования, представляющая способ добавления данного столбца в инструкцию описания данных, например CREATE TABLE. Каждый элемент в массиве CreateParameter должен быть представлен в строке форматирования меткой параметра.

Например, тип данных DECIMAL в SQL требует указания точности и масштаба. В этом случае строка форматирования будет иметь вид DECIMAL({0},{1}).
CreateParameters string Параметры создания, которые необходимо указать при создании столбца данных этого типа. Каждый параметр создания указывается в строке, разделенной запятыми в том порядке, в котором они должны быть предоставлены.

Например, тип данных DECIMAL в SQL требует указания точности и масштаба. В этом случае параметры создания должны содержать строку «точность, масштаб».

В тексте команды для создания столбца DECIMAL с точностью 10 и масштабом 2 значение столбца CreateFormat может быть равно DECIMAL({0},{1}), а полная спецификация типа будет иметь вид DECIMAL(10,2).
Тип данных string Имя типа данных для типа .NET.
IsAutoincrementable bool true — значения этого типа данных могут увеличиваться автоматически.

false — значения этого типа данных могут не увеличиваться автоматически.

Это свойство просто указывает, может ли столбец этого типа данных увеличиваться автоматически, а не то, что все столбцы этого типа автоматически увеличиваются.
IsBestMatch bool true — тип данных является наиболее точным соответствием между всеми типами данных в хранилище данных и типом данных .NET, указанным значением в столбце DataType.

false — тип данных не является наиболее точным соответствием.

Для каждого набора строк, в которых значение столбца DataType является идентичным, для столбца IsBestMatch задается значение true только в одной строке.
IsCaseSensitive bool true — тип данных является символьным типом, для которого учитывается регистр.

false — тип данных не является символьным типом или для него не учитывается регистр.
IsFixedLength bool true — столбцы этого типа данных, созданные с помощью языка DDL, будут иметь фиксированную длину.

false — столбцы этого типа данных, созданные с помощью языка DDL, будут иметь переменную длину.

DBNull.Value — неизвестно, будет ли поставщик сопоставлять это поле со столбцом с фиксированной или переменной длиной.
IsFixedPrecisionScale bool true — тип данных имеет фиксированные точность и масштаб.

false — тип данных не имеет фиксированных точности и масштаба.
IsLong bool true — тип данных содержит очень длинные данные; определение очень длинных данных зависит от поставщика.

false — тип данных не содержит слишком длинных данных.
IsNullable bool true — тип данных допускает значение NULL.

false — тип данных не допускает значения NULL.

DBNull.Value — неизвестно, допускает ли тип данных значение NULL.
IsSearchable bool true — тип данных можно использовать в предложении WHERE с любым оператором, кроме предиката LIKE.

false — тип данных нельзя использовать в предложении WHERE с любым оператором, кроме предиката LIKE.
IsSearchableWithLike bool true — тип данных можно использовать с предикатом LIKE.

false — тип данных нельзя использовать с предикатом LIKE.
IsUnsigned bool true — тип данных не подписан.

false — тип данных подписан.

DBNull.Value — неприменимо к типу данных.
MaximumScale short Если индикатор типа является числовым типом, это значение представляет собой максимальное количество цифр, разрешенное справа от десятичной точки. В противном случае это значение равно DBNull.Value.
MinimumScale short Если индикатор типа является числовым типом, это значение представляет собой минимальное количество цифр, разрешенное справа от десятичной точки. В противном случае это значение равно DBNull.Value.
IsConcurrencyType bool true — тип данных обновляется базой данных каждый раз при изменении строки, а значение столбца отличается от всех предыдущих значений.

false — тип данных обновляется базой данных каждый раз при изменении строки.

DBNull.Value — база данных не поддерживает этот тип данных.
IsLiteralSupported bool true — тип данных может быть выражен в виде литерала.

false — тип данных не может быть выражен в виде литерала.
LiteralPrefix string К заданному литералу применяется префикс.
LiteralSuffix string К заданному литералу применяется суффикс.

Ограничения

Эта коллекция схем предоставляет сведения об ограничениях, поддерживаемых поставщиком, который сейчас используется для подключения к базе данных.

ColumnName Тип данных Description
CollectionName string Имя коллекции, к которой применяются эти ограничения.
RestrictionName string Имя ограничения в коллекции.
RestrictionDefault string Пропускается.
RestrictionNumber int Фактическое расположение в коллекциях тех ограничений, к которым относится данное конкретное ограничение.

ReservedWords

Эта коллекция схем предоставляет сведения о словах, зарезервированных базой данных, к которой сейчас подключен поставщик.

ColumnName Тип данных Description
ReservedWord string Зарезервированное слово, определяемое поставщиком.

См. также