Types simples (Métadonnées)
Dans le modèle EDM (Modèle de données d'entité), les types simples sont constitués de types primitifs. Pour plus d'informations sur les types simples du modèle EDM, voir Types simples (EDM).
ADO.NET fournit un objet PrimitiveType, dérivé de l'objet SimpleType, pour décrire les types primitifs .NET Framework, les types primitifs EDM et les types primitifs spécifiques au fournisseur de stockage. L'infrastructure de métadonnées ADO.NET gère les mappages entre les types primitifs des modèles objet, conceptuels et de stockage. Les types primitifs des modèles objet et conceptuels ont toujours des correspondances un-à-un par défaut. Les types primitifs de modèles de stockage dépendent du fournisseur de stockage ou de la base de données utilisés.
Chaque fournisseur de stockage définit ses propres types primitifs. L'infrastructure de métadonnées ADO.NET demande au fournisseur de stockage les définitions des types primitifs au cours de l'exécution. Chaque fournisseur de stockage doit déclarer ses types primitifs dans un document XML appelé « manifeste du fournisseur ».
Le fichier de manifeste du fournisseur inclut la liste des types primitifs du fournisseur, les mappages entre les types primitifs des modèles conceptuels et de stockage, ainsi que les règles de promotion et de conversion entre les types primitifs des modèles conceptuels et de stockage.
L'exemple de code suivant montre comment obtenir un espace de travail des métadonnées à partir de la connexion, puis utiliser cet espace pour récupérer les informations relatives à un type primitif spécifique et à tous les autres types primitifs du modèle spécifié. Notez que l'espace de travail des métadonnées est un composant de service du runtime qui fournit une prise en charge de la récupération des métadonnées.
L'exemple de code utilise un CSpace et un SSpace pour spécifier les modèles. CSpace représente le nom par défaut du modèle conceptuel. SSpace représente le nom par défaut du modèle de stockage. L'exemple de code utilise la chaîne de connexion qui est fournie dans le fichier de configuration d'application. Pour obtenir un exemple du fichier de configuration d'application, voir Utilisation du modèle objet AdventureWorks (EDM).
using System;
using System.Data;
using System.Data.EntityClient;
using System.Collections.ObjectModel;
using System.Data.Metadata.Edm;
class GetPrimitiveTypesExample
{
static void Main()
{
try
{
// Establish a connection to the underlying data provider by
// using the connection string specified in the config file.
using (EntityConnection connection =
new EntityConnection("Name=AdventureWorksEntities"))
{
// Open the connection.
connection.Open();
// Access the metadata workspace.
MetadataWorkspace workspace =
connection.GetMetadataWorkspace();
// Get primitive types from the conceptual model.
GetPrimitiveTypes(workspace, DataSpace.CSpace);
// Get primitive types from the storage model.
GetPrimitiveTypes(workspace, DataSpace.SSpace);
}
}
catch (MetadataException exceptionMetadata)
{
Console.WriteLine("MetadataException: {0}",
exceptionMetadata.Message);
}
catch (System.Data.MappingException exceptionMapping)
{
Console.WriteLine("MappingException: {0}",
exceptionMapping.Message);
}
}
private static void GetPrimitiveTypes(
MetadataWorkspace workspace, DataSpace model)
{
// Get a collection of the primitive types.
ReadOnlyCollection<PrimitiveType> primitiveTypes =
workspace.GetPrimitiveTypes(model);
// Iterate through the collection to get each primitive type.
foreach (PrimitiveType prim in primitiveTypes)
{
Console.WriteLine(
"Type BuiltInTypeKind: {0}, Type: {1}, Type in Model: {2} ",
prim.BuiltInTypeKind, prim.ClrEquivalentType.FullName,
prim.FullName);
}
}
}
Imports System
Imports System.Data
Imports System.Data.EntityClient
Imports System.Collections.ObjectModel
Imports System.Data.Metadata.Edm
Class GetPrimitiveTypesExample
Shared Sub Main()
Try
' Establish a connection to the underlying data provider by
' using the connection string specified in the config file.
Using connection As EntityConnection = _
New EntityConnection("Name=AdventureWorksEntities")
' Open the conection.
connection.Open()
' Access the metadata workspace.
Dim workspace As MetadataWorkspace = _
connection.GetMetadataWorkspace
' Get primitive types from the conceptual model.
GetPrimitiveTypes(workspace, DataSpace.CSpace)
' Get primitive types from the storage model.
GetPrimitiveTypes(workspace, DataSpace.SSpace)
End Using
Catch exceptionMetadata As MetadataException
Console.WriteLine("MetadataException: {0}", _
exceptionMetadata.Message)
Catch exceptionMapping As MappingException
Console.WriteLine("MappingException: {0}", _
exceptionMapping.Message)
End Try
End Sub
Public Shared Sub GetPrimitiveTypes(ByVal workspace As _
MetadataWorkspace, ByVal model As DataSpace)
' Get a collection of the primitive types.
Dim primitiveTypes As ReadOnlyCollection(Of PrimitiveType) = _
workspace.GetPrimitiveTypes(model)
' Iterate through the collection to get each primitive type.
Dim prim As PrimitiveType
For Each prim In primitiveTypes
Console.WriteLine( _
"Type BuiltInTypeKind: {0}, Type: {1}, Type in Model: {2} ", _
prim.BuiltInTypeKind, prim.ClrEquivalentType.FullName, prim.FullName)
Next
End Sub
End Class
Voir aussi
Concepts
Types (Métadonnées)
Hiérarchie des types de métadonnées
Vue d'ensemble de la hiérarchie des types de métadonnées