Raccolte di schemi comuni

Si applica a: .NET Framework .NET .NET Standard

Scarica ADO.NET

Le raccolte di schemi comuni sono le raccolte di schemi implementate da ciascun provider gestito .NET. È possibile eseguire una query in un provider gestito .NET per determinare l'elenco delle raccolte di schemi supportate chiamando il metodo GetSchema senza argomenti oppure con il nome della raccolta di schemi "MetaDataCollections". Questo metodo restituisce 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 altre colonne, se necessario. Ad esempio, il provider di dati Microsoft SqlClient per SQL Server aggiunge 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 vengono riportate informazioni su tutte le raccolte di schemi supportate dal provider 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. In SQL Server, ad esempio, il valore 3 corrisponde alle tabelle e il valore 4 alle colonne.

DataSourceInformation

Questa raccolta di schemi espone informazioni sull'origine dati a cui è attualmente connesso il provider di dati Microsoft SqlClient per SQL Server.

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

Un identificatore composito viene generalmente usato per un nome dell'oggetto di database, ad esempio pubs.dbo.authors o pubs@dbo.authors.

Per SQL Server, usare l'espressione regolare \..
DataSourceProductName string Nome del prodotto a cui accede il provider, ad esempio "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 sono lo stesso valore.
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.

In SQL Server, ad esempio, si usa il tipico formato Microsoft nn.nn.nnnn.

In alcuni casi, DataSourceProductVersion e DataSourceProductVersionNormalized sono lo stesso valore.
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. Un valore pari a true indica che le colonne devono trovarsi nell'elenco di selezione. Un valore pari a false indica che le colonne non devono trovarsi nell'elenco di selezione.
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.

Se ad esempio l'origine dati prevede che i parametri siano denominati e includano il prefisso :, il risultato sarà :{0}. Quando si esegue la formattazione del parametro con nome p1, la stringa risultante è :p1.

Se l'origine dati prevede che i parametri presentino il prefisso @, che tuttavia è già incluso nel nome, la stringa sarà {0}, mentre il risultato della formattazione di un parametro denominato @p1 sarà @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.
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 incluso nel nome del parametro, il risultato sarà (\@[A-Za-z0-9_$#]*).

Se tuttavia i parametri denominati sono supportati con : come carattere iniziale non incluso nel nome del parametro, il risultato sarà :([A-Za-z0-9_$#]\*).

Se l'origine dati non supporta i parametri denominati, il risultato sarà ?.
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, la proprietà restituisce zero.
ParameterNamePattern string Un'espressione regolare che corrisponde ai nomi di parametro validi. Origini dati diverse hanno regole diverse sui 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. Ad esempio, se nell'origine dati sono state usate le virgolette doppie per indicare 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. Ad esempio, se 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 il provider è attualmente connesso.

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.
ColumnSize long Lunghezza di una colonna o di un parametro non numerico. Tale valore 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.

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, si tratta del limite superiore rispetto alla precisione massima 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).
DataType string Nome del tipo .NET del tipo di dati.
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.

Questa proprietà indica 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 dati e il tipo di dati .NET indicato dal valore nella colonna DataType.

false - Il tipo di dati non è la corrispondenza migliore.

Per ciascun set di righe in cui il valore della colonna DataType è identico, la colonna IsBestMatch viene 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 non è un tipo di carattere o non fa distinzione tra maiuscole e minuscole.
IsFixedLength bool true - Le colonne di questo tipo di dati create da DDL (Data Definition Language) sono di lunghezza fissa.

false - Le colonne di questo tipo di dati create da DDL sono 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 di una scala fisse.

false - Il tipo di dati non dispone di una precisione fissa né di una scala.
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 non 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 è senza segno.

false - Il tipo di dati è con segno.

DBNull.Value - Non applicabile al tipo di dati.
MaximumScale short Se l'indicatore di tipo è numerico, questo valore corrisponde al numero massimo di cifre consentito a destra del separatore decimale. In caso contrario, il valore è DBNull.Value.
MinimumScale short Se l'indicatore di tipo è numerico, questo valore corrisponde al numero minimo di cifre consentito a destra del separatore decimale. In caso contrario, il valore è 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.

Restrizioni

La raccolta di schemi espone informazioni sulle restrizioni supportate dal provider attualmente connesso 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 a cui è il provider è attualmente connesso.

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

Vedi anche