단순 형식(메타데이터)
EDM(엔터티 데이터 모델)에서 단순 형식은 기본 형식으로 구성됩니다. EDM의 단순 형식에 대한 자세한 내용은 단순 형식(EDM)을 참조하십시오.
ADO.NET에서는 .NET Framework 기본 형식, EDM 기본 형식 및 저장소 공급자 특정 기본 형식을 정의하기 위해 SimpleType에서 파생되는 PrimitiveType을 제공합니다. ADO.NET 메타데이터 인프라는 개체, 개념적 모델 및 저장소 모델 기본 형식 간의 매핑을 처리합니다. 개체 및 개념적 모델 기본 형식은 항상 일대일 기본 매핑 값을 가집니다. 저장소 모델 기본 형식은 사용하는 저장소 공급자 또는 데이터베이스에 따라 다릅니다.
각 저장소 공급자는 자체 기본 형식을 정의합니다. ADO.NET 메타데이터 인프라는 런타임 도중 저장소 공급자에게 기본 형식의 정의를 요청합니다. 각 저장소 공급자는 공급자 매니페스트라는 XML 문서에 기본 형식을 선언해야 합니다.
공급자 매니페스트 파일에는 공급자 기본 형식의 목록, 개념적 모델과 저장소 모델 기본 형식 간의 매핑, 개념적 모델과 저장소 모델 기본 형식 간의 승격과 변환 규칙이 포함됩니다.
다음 코드 샘플에서는 연결에서 메타데이터 작업 영역을 가져온 다음 이 메타데이터 작업 영역을 사용하여 지정된 모델의 특정 기본 형식 및 기타 모든 기본 형식에 대한 정보를 검색하는 방법을 보여 줍니다. 메타데이터 작업 영역은 메타데이터 검색을 지원하는 런타임 서비스 구성 요소입니다.
코드 샘플에서는 CSpace 및 SSpace를 사용하여 모델을 지정합니다. 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