Общие коллекции схем
Область применения: платформа .NET Framework .NET Standard
Общие коллекции схем реализуются каждым из управляемых поставщиков .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 |
Зарезервированное слово, определяемое поставщиком. |