次の方法で共有


単純型 (メタデータ)

エンティティ データ モデル (EDM) では、単純型はプリミティブ型から構成されます。EDM における単純型の詳細については、「単純型 (EDM)」を参照してください。

ADO.NET は、.NET Framework プリミティブ型、EDM プリミティブ型、およびストレージ プロバイダに固有のプリミティブ型を記述するための、SimpleType から派生する PrimitiveType を提供します。ADO.NET メタデータ インフラストラクチャは、オブジェクト モデル、概念モデル、およびストレージ モデルのプリミティブ型の間のマッピングを処理します。オブジェクト モデルと概念モデルのプリミティブ型は、既定で常に一対一で一致します。ストレージ モデルのプリミティブ型は、使用するストレージ プロバイダまたはデータベースに依存します。

それぞれのストレージ プロバイダは、独自のプリミティブ型を定義します。ADO.NET メタデータ インフラストラクチャは、実行時にストレージ プロバイダからプリミティブ型の定義を要求します。それぞれのストレージ プロバイダは、プロバイダ マニフェストと呼ばれる XML ドキュメント内でプリミティブ型を宣言する必要があります。

プロバイダ マニフェスト ファイルには、プロバイダ プリミティブ型のリスト、概念モデルとストレージ モデルのプリミティブ型とのマッピング、および概念モデルとストレージ モデルのプリミティブ型間での昇格と変換の規則が含まれています。

次のコード サンプルでは、接続からメタデータ ワークスペースを取得した後、そのメタデータ ワークスペースを使用して、指定されたモデルにおける特定のプリミティブ型およびその他のすべてのプリミティブ型に関する情報を取得します。メタデータ ワークスペースは、メタデータの取得をサポートするランタイム サービス コンポーネントです。

このコード サンプルでは、CSpaceSSpace を使用して、モデルを指定します。CSpace は、概念モデルの既定の名前を表します。SSpace は、ストレージ モデルの既定の名前を表します。このコード サンプルでは、アプリケーション構成ファイルに指定されている接続文字列を使用します。アプリケーション構成ファイルの例については、「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

参照

概念

型 (メタデータ)
メタデータ型の階層
メタデータ型の階層の概要