Freigeben über


Einfache Typen (Metadaten)

Im Entitätsdatenmodell (EDM) bestehen einfache Typen aus primitiven Typen. Weitere Information über die einfachen Typen im EDM finden Sie unter Einfache Typen (EDM).

ADO.NET stellt einen PrimitiveType bereit, der vom SimpleType abgeleitet ist, um die primitiven Typen von .NET Framework und EDM sowie speicheranbieterspezifische primitive Typen zu beschreiben. Die ADO.NET-Metadateninfrastruktur behandelt die Mappings zwischen den primitiven Typen in den Objektmodellen, den konzeptionellen Modellen und den Speichermodellen. Die primitiven Typen von Objekt- und Speichermodellen verfügen immer über 1:1-Standardübereinstimmungen. Die primitiven Typen von Speichermodellen sind abhängig vom verwendeten Speicheranbieter bzw. von der verwendeten Datenbank.

Von jedem Speicheranbieter werden eigene primitive Typen definiert. Die ADO.NET-Metadateninfrastruktur fordert zur Laufzeit die Definitionen der primitiven Typen vom Speicheranbieter an. Die primitiven Typen jedes Speicheranbieters müssen in einem XML-Dokument deklariert werden, welches als Anbietermanifest bezeichnet wird.

Die Anbietermanifestdatei enthält eine Liste der primitiven Typen des Anbieters, die Mappings zwischen den primitiven Typen von konzeptionellem Modell und Speichermodell sowie die Konvertierungsregeln zwischen den primitiven Typen von konzeptionellem Modell und Speichermodell.

Im folgenden Codebeispiel wird dargestellt, wie von der Verbindung ein Metadaten-Arbeitsbereich abgerufen und verwendet wird, um Informationen über einen bestimmten primitiven Typ bzw. alle anderen primitiven Typen im angegebenen Modell abzurufen. Beachten Sie, dass es sich beim Metadaten-Arbeitsbereich um eine Laufzeitdienstkomponente handelt, die Unterstützung für das Abrufen von Metadaten bereitstellt.

Im Codebeispiel wird ein CSpace und ein SSpace verwendet, um die Modelle anzugeben. CSpace stellt den Standardnamen für das konzeptionelle Modell dar. SSpace stellt den Standardnamen für das Speichermodell dar. Im Codebeispiel wird die in der Anwendungskonfigurationsdatei bereitgestellte Verbindungszeichenfolge verwendet. Ein Beispiel für die Anwendungskonfigurationsdatei finden Sie unter Verwendung des AdventureWorks-Objektmodells (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

Siehe auch

Konzepte

Typen (Metadaten)
Metadatentyp-Hierarchie
Übersicht über die Metadatentyp-Hierarchie