Raccolte di schemi comuni

Le raccolte di schemi comuni sono le raccolte di schemi implementati da ciascun provider gestito .NET Framework. È possibile eseguire una query in un provider gestito .NET Framework per determinare l'elenco delle raccolte di schemi supportati chiamando il metodo GetSchema senza argomenti oppure con il nome della raccolta di schemi "MetaDataCollections". In questo modo verrà restituito un oggetto DataTable con un elenco delle raccolte di schemi supportati, il numero delle restrizioni supportate da ciascuna raccolta e il numero di parti identificatore usate. Tutte le colonne richieste vengono descritte in queste raccolte. I provider hanno la possibilità di aggiungere colonne, se necessario. Ad esempio, SqlClient e OracleClient aggiungono ParameterName alla raccolta delle restrizioni.

Se un provider non è in grado di determinare il valore di una colonna richiesta, verrà restituito null.

Per altre informazioni sull'uso dei metodi GetSchema, vedere GetSchema e raccolte di schemi.

MetaDataCollections

In questa raccolta di schemi vengono riportate informazioni su tutte le raccolte di schemi supportate dal provider gestito di .NET Framework attualmente usato per la connessione al database.

ColumnName Tipo di dati Descrizione
CollectionName string Il nome della raccolta da passare al metodo GetSchema per restituire la raccolta.
NumberOfRestrictions int Il numero di restrizioni che è possibile specificare per la raccolta.
NumberOfIdentifierParts int Il numero di parti nel nome dell'oggetto di database/identificatore composito. Ad esempio, in SQL Server 3 corrisponde alle tabelle e 4 alle colonne. In Oracle 2 corrisponde alle tabelle e 3 alle colonne.

DataSourceInformation

La raccolta di schemi espone informazioni sull'origine dati a cui è connesso il provider gestito .NET Framework.

ColumnName Tipo di dati Descrizione
CompositeIdentifierSeparatorPattern string L'espressione regolare che corrisponde ai separatori compositi in un identificatore composito. Ad esempio, "\." (per SQL Server) o "@|\." (per Oracle).

Un identificatore composito viene generalmente usato come nome di oggetto di database, ad esempio: pubs.dbo.authors o pubs@dbo.authors.

Per SQL Server, usare l'espressione regolare "\.". Per OracleClient, usare "@|\.".

Per ODBC, usare Catalog_name_separator.

Per OLE DB, usare DBLITERAL_CATALOG_SEPARATOR o DBLITERAL_SCHEMA_SEPARATOR.
DataSourceProductName string Il nome del prodotto a cui ha avuto accesso il provider, come "Oracle" o "SQLServer".
DataSourceProductVersion string Indica la versione del prodotto a cui ha avuto accesso il provider, nel formato nativo delle origini dati e non in formato Microsoft.

In alcuni casi DataSourceProductVersion e DataSourceProductVersionNormalized corrisponderanno allo stesso valore. Nel caso di OLE DB e ODBC risulteranno sempre uguali poiché sono mappati alla stessa chiamata di funzione nell'API nativo sottostante.
DataSourceProductVersionNormalized string Una versione normalizzata per l'origine dati, che è possibile confrontare con String.Compare(). Il formato è lo stesso in tutte le versioni del provider per evitare che la versione 10 venga elencata tra la versione 1 e la versione 2.

Il provider Oracle usa ad esempio il formato "nn.nn.nn.nn.nn" per la versione normalizzata, pertanto un'origine dati Oracle 8i restituirà "08.01.07.04.01". SQL Server usa il formato "nn.nn.nnnn", tipico di Microsoft.

In alcuni casi DataSourceProductVersion e DataSourceProductVersionNormalized corrisponderanno allo stesso valore. Nel caso di OLE DB e ODBC risulteranno sempre uguali poiché sono mappati alla stessa chiamata di funzione nell'API nativo sottostante.
GroupByBehavior GroupByBehavior Specifica il rapporto tra le colonne nella clausola GROUP BY e le colonne non aggregate nell'elenco di selezione.
IdentifierPattern string Un'espressione regolare che corrisponde a un identificatore e dispone di un valore di corrispondenza dell'identificatore. Ad esempio "[A-Za-z0-9_#$]".
IdentifierCase IdentifierCase Indica se per gli identificatori non delimitati viene eseguita la distinzione tra maiuscole e minuscole.
OrderByColumnsInSelect bool Specifica se le colonne nella clausola ORDER BY devono essere presenti nell'elenco di selezione. Il valore true indica che le colonne devono risultare nell'elenco di selezione, mentre il valore false indica che non è necessario.
ParameterMarkerFormat string Una stringa di formato che rappresenta la modalità di formattazione di un parametro.

Se i parametri denominati sono supportati dall'origine dati, il primo segnalibro di questa stringa deve trovarsi nella posizione in cui verrà formattato il nome del parametro.

Ad esempio, se l'origine dati prevede che i parametri vengano denominati e includano il prefisso ':', il risultato sarà ":{0}". Quando si esegue la formattazione con il nome di parametro "p1" la stringa risultante sarà ":p1".

Se l'origine dati prevede che i parametri presentino il prefisso "@" ma tale prefisso è già incluso nel nome, il risultato sarà "{0}", mentre il risultato della formattazione di un parametro denominato "@p1" sarà semplicemente "@p1".

Per le origini dati che non prevedono parametri denominati, bensì l'uso del carattere '?', la stringa di formato può essere specificata semplicemente come '?', in modo da ignorare il nome del parametro. Per OLE DB viene restituito "?".
ParameterMarkerPattern string Un'espressione regolare che corrisponde al marcatore di parametro. Avrà un valore corrispondente per il nome del parametro, se disponibile.

Se, ad esempio, i parametri denominati sono supportati con un carattere iniziale "@" che sarà incluso nel nome del parametro, il risultato sarà: "(@[A-Za-z0-9_$#]*)".

Se tuttavia i parametri denominati sono supportati con un carattere iniziale ":" che non fa parte del nome del parametro, il risultato sarà: ":([A-Za-z0-9_$#]*)".

Naturalmente, se l'origine dati non supporta i parametri denominati, il risultato sarà semplicemente "?".
ParameterNameMaxLength int La lunghezza massima del nome del parametro in caratteri. In Visual Studio si presuppone che se i nomi di parametri sono supportati, il valore minimo per la lunghezza massima corrisponderà a 30 caratteri.

Se l'origine dati non supporta i parametri denominati, questa proprietà restituisce zero.
ParameterNamePattern string Un'espressione regolare che corrisponde ai nomi di parametro validi. Origini dati diverse hanno regole diverse per i caratteri che è possibile usare con i nomi di parametro.

In Visual Studio si presuppone che se sono supportati i nomi di parametro, i caratteri "\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd}" rappresentano il set di caratteri minimo supportato, valido per i nomi di parametro.
QuotedIdentifierPattern string Un'espressione regolare che corrisponde a un identificatore delimitato e dispone di un valore di corrispondenza dell'identificatore senza virgolette. Se, ad esempio, nell'origine dati sono state usate le virgolette doppie per identificare gli identificatori delimitati, il risultato sarà: "(([^\"]|\"\")*)".
QuotedIdentifierCase IdentifierCase Indica se per gli identificatori delimitati viene eseguita la distinzione tra maiuscole e minuscole.
StatementSeparatorPattern string Un'espressione regolare che corrisponde al separatore di istruzione.
StringLiteralPattern string Un'espressione regolare che corrisponde a una stringa letterale e dispone di un valore di corrispondenza del valore letterale. Se, ad esempio, nell'origine dati sono state usate le virgolette singole per identificare le stringhe, il risultato sarà: "('([^']|'')*')"'
SupportedJoinOperators SupportedJoinOperators Specifica i tipi di istruzioni join di SQL supportati dall'origine dati.

DataTypes

La raccolta di schemi espone informazioni sui tipi di dati supportati dal database al quale è connesso il provider gestito .NET Framework.

ColumnName Tipo di dati Descrizione
TypeName string Il nome del tipo di dati specifico del provider.
ProviderDbType int Valore di tipo specifico del provider da usare quando si specifica un tipo di parametro. Ad esempio, SqlDbType.Money o OracleType.Blob.
ColumnSize long La lunghezza di una colonna o di un parametro non numerico fa riferimento alla lunghezza massima o definita per questo tipo dal provider.

Per i dati di tipo carattere, rappresenta la lunghezza massima o definita in unità, definita dall'origine dati. In Oracle è possibile specificare una lunghezza, quindi la dimensione della memoria effettiva per determinati tipi di dati carattere. Ciò consente di definire solo la lunghezza in unità per Oracle.

Per i tipi di dati data-ora, rappresenta la lunghezza della rappresentazione stringa (se si suppone la massima precisione consentita del componente in frazioni di secondo).

Se il tipo di dati è numerico, rappresenta il limite superiore sulla massima precisione del tipo di dati.
CreateFormat string Stringa di formato che indica come aggiungere la colonna a un'istruzione di definizione dei dati, come CREATE TABLE. Ciascun elemento nella matrice CreateParameter deve essere rappresentato da un "marcatore di parametro" nella stringa di formato.

Ad esempio, per il tipo di dati SQL DECIMAL sono necessarie una precisione e una scala. In questo caso, la stringa di formato sarà "DECIMAL({0},{1})".
CreateParameters string I parametri di creazione da specificare durante la creazione di una colonna di questo tipo di dati. Ciascun parametro di creazione viene elencato nella stringa, separato da una virgola nell'ordine in cui deve essere fornito.

Ad esempio, per il tipo di dati SQL DECIMAL sono necessarie una precisione e una scala. In questo caso, i parametri di creazione devono contenere la stringa "precision, scale".

In un comando di testo per creare una colonna DECIMAL con una precisione di 10 e una scala di 2, il valore della colonna CreateFormat può essere DECIMAL({0},{1})" e la specifica completa del tipo sarà DECIMAL(10,2).
Tipo di dati string Il nome del tipo di dati .NET Framework.
IsAutoincrementable bool true—I valori di questo tipo di dati possono essere a incremento automatico.

false—I valori di questo tipo di dati possono non essere a incremento automatico.

Notare che anche se una colonna di questo tipo di dati può essere a incremento automatico, non significa che tutte le colonne di questo tipo lo siano.
IsBestMatch bool true—Il tipo di dati è la corrispondenza più appropriata tra tutti i tipi di dati nell'archivio e il tipo di dati .NET Framework indicato dal valore nella colonna DataType.

false—Il tipo di dati non rappresenta la corrispondenza più appropriata.

Per ciascun set di righe in cui il valore della colonna DataType è lo stesso, la colonna IsBestMatch è impostata su true in una sola riga.
IsCaseSensitive bool true—Il tipo di dati è di tipo carattere e viene fatta distinzione tra maiuscole e minuscole.

false—Il tipo di dati è di tipo carattere e viene fatta distinzione tra maiuscole e minuscole.
IsFixedLength bool true—Le colonne di questo tipo di dati create dal DDL (Data Definition Language) saranno di lunghezza fissa.

false—Le colonne di questo tipo di dati create dal DDL saranno di lunghezza variabile.

DBNull.Value—Non è noto se il provider eseguirà il mapping del campo con una colonna di lunghezza fissa o di lunghezza variabile.
IsFixedPrecisionScale bool true—Il tipo di dati dispone di una precisione e una scala fisse.

false—Il tipo di dati non dispone di una precisione e una scala fisse.
IsLong bool true—Il tipo di dati contiene dati molto lunghi. La definizione dei dati molto lunghi è specifica del provider.

false—Il tipo di dati non contiene dati molto lunghi.
IsNullable bool true—Il tipo di dati ammette valori null.

false—Il tipo di dati non ammette valori null.

DBNull.Value—Non è noto se il tipo di dati ammette valori null.
IsSearchable bool true—Il tipo di dati può essere usato in una clausola WHERE con qualsiasi operatore ad eccezione del predicato LIKE.

false—Il tipo di dati non può essere usato in una clausola WHERE con qualsiasi operatore ad eccezione del predicato LIKE.
IsSearchableWithLike bool true—Il tipo di dati può essere usato con il predicato LIKE

false—Il tipo di dati non può essere usato con il predicato LIKE.
IsUnsigned bool true—Il tipo di dati è unsigned.

false—Il tipo di dati è signed.

DBNull.Value—Non applicabile al tipo di dati.
MaximumScale short Se l'indicatore di tipo è numerico, corrisponde al numero massimo di cifre consentito a destra del separatore decimale. Altrimenti sarà DBNull.Value.
MinimumScale short Se l'indicatore di tipo è numerico, corrisponde al numero minimo di cifre consentito a destra del separatore decimale. Altrimenti sarà DBNull.Value.
IsConcurrencyType bool true – Il tipo di dati viene aggiornato dal database ogni volta che la riga viene modificata e il valore della colonna è diverso da tutti i valori precedenti

false – Il tipo di dati non viene aggiornato dal database ogni volta che viene modificata la riga

DBNull.Value – il database non supporta questo tipo di dati
IsLiteralSupported bool true – Il tipo di dati può essere espresso come valore letterale

false – Il tipo di dati non può essere espresso come valore letterale
LiteralPrefix string Il prefisso applicato a un dato valore letterale.
LiteralSuffix string Il suffisso applicato a un dato valore letterale.
NativeDataType String NativeDataType è una colonna specifica di OLE DB per l'esposizione del tipo di dati OLE DB.

Restrizioni

La raccolta di schemi espone informazioni sulle restrizioni supportate dal provider gestito .NET Framework usato per la connessione al database.

ColumnName Tipo di dati Descrizione
CollectionName string Il nome della raccolta a cui sono applicate queste restrizioni.
RestrictionName string Il nome della restrizione nella raccolta.
RestrictionDefault string Ignorato.
RestrictionNumber int La posizione effettiva nelle restrizioni delle raccolte in cui rientra questa particolare restrizione.

ReservedWords

La raccolta di schemi espone informazioni sulle parole riservate dal database al quale è connesso il provider gestito .NET Framework.

ColumnName Tipo di dati Descrizione
ReservedWord string Parola riservata specifica del provider.

Vedi anche