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

Стандартные коллекции схем - это коллекции схем, реализуемые каждым из управляемых поставщиков .NET Framework. Вы можете запросить управляемого поставщика платформа .NET Framework, чтобы определить список поддерживаемых коллекций схем, вызвав метод GetSchema без аргументов или имя коллекции схем MetaDataCollections. При этом будет возвращена DataTable со списком поддерживаемых коллекций схем, число ограничений, которые каждая из них поддерживает, и число идентификационных частей, которые в них используются. Данные коллекции описывают все требуемые столбцы. По желанию в поставщиках может быть предусмотрено добавление дополнительных столбцов. Например, поставщики SqlClient и OracleClient добавляют к коллекции ограничений столбец ParameterName.

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

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

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

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

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

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

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

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

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

Для SQL Server используйте регулярное выражение "\.". Для OracleClient используйте "@|\.".

Для ODBC используется Catalog_name_separator.

Для OLE DB следует использовать DBLITERAL_CATALOG_SEPARATOR или DBLITERAL_SCHEMA_SEPARATOR.
DataSourceProductName строка Имя продукта, доступ к которому обеспечивается поставщиком, например «Oracle» или «SQLServer».
DataSourceProductVersion строка Версия продукта, доступ к которому обеспечивается поставщиком, в собственном формате источников данных, а не в формате Microsoft.

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

Например, поставщик Oracle использует формат nn.nn.nn.nn.nn.nn.nn для его нормализованной версии, что приводит к возврату источника данных Oracle 8i "08.01.07.04.01". SQL Server использует типичный формат Microsoft nn.nn.nnnn.

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

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

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

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

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

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

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

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

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

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

DataTypes

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

ColumnName Тип данных Description
TypeName строка Имя типа данных, связанного с поставщиком.
ProviderDbType INT Зависящее от поставщика значение типа, которое следует использовать при указании типа параметра. Например, SqlDbType.Money или OracleType.Blob.
ColumnSize длинный Значение длины нечислового столбца или параметра, которое относится либо к максимуму, либо к длине, определенной поставщиком для этого типа.

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

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

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

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

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

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

false. Значения данных этого типа не могут быть заданы с автоматическим приращением.

Обратите внимание, что определяется лишь возможность, что столбцы этого типа данных могут быть заданы с автоматическим приращением, а не то, что все столбцы этого типа имеют автоматическое приращение.
IsBestMatch bool true. Данные этого типа выбираются с учетом наилучшего соответствия между типами данных хранилища данных и типом данных .NET Framework, определяемым значением в столбце 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 строка К заданному литералу применяется префикс.
LiteralSuffix строка К заданному литералу применяется суффикс.
NativeDataType Строка NativeDataType представляет собой столбец OLE DB, который служит для обеспечения доступа к данным типа OLE DB.

Ограничения

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

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

ReservedWords

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

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

См. также