Annotation 요소(CSDL)

CSDL(개념 스키마 정의 언어)의 Annotation 요소는 개념적 모델의 사용자 지정 XML 요소입니다. Annotation 요소는 올바른 XML 구조를 가져야 함은 물론 다음 조건을 충족해야 합니다.

  • Annotation 요소는 CSDL용으로 예약된 XML 네임스페이스에 속하지 않아야 합니다.

  • 두 개 이상의 Annotation 요소가 제공된 CSDL 요소의 자식이 될 수 있습니다.

  • 두 Annotation 요소의 정규화된 이름은 서로 같을 수 없습니다.

  • Annotation 요소는 제공된 CSDL 요소의 다른 모든 자식 요소 뒤에 나타나야 합니다.

Annotation 요소를 사용하여 개념적 모델의 요소에 대한 추가 메타데이터를 제공할 수 있습니다. .NET Framework 버전 4부터 Annotation 요소에 포함된 메타데이터는 System.Data.Metadata.Edm 네임스페이스의 클래스를 사용하여 런타임에 액세스할 수 있습니다.

예제

다음 예제에서는 Annotation 요소(CustomElement)가 포함된 EntityType 요소를 보여 줍니다. 다음 예제에서는 엔터티 형식 요소에 적용된 주석 특성도 보여 줍니다. 자세한 내용은 주석 특성(CSDL)을 참조하십시오.

<Schema Namespace="SchoolModel" Alias="Self"
        xmlns:annotation="https://schemas.microsoft.com/ado/2009/02/edm/annotation"
        xmlns="https://schemas.microsoft.com/ado/2008/09/edm">
  <EntityContainer Name="SchoolEntities" annotation:LazyLoadingEnabled="true">
    <EntitySet Name="People" EntityType="SchoolModel.Person" />
  </EntityContainer>
  <EntityType Name="Person" xmlns:p="http://CustomNamespace.com"
              p:CustomAttribute="Data here.">
    <Key>
      <PropertyRef Name="PersonID" />
    </Key>
    <Property Name="PersonID" Type="Int32" Nullable="false"
              annotation:StoreGeneratedPattern="Identity" />
    <Property Name="LastName" Type="String" Nullable="false"
              MaxLength="50" Unicode="true" FixedLength="false" />
    <Property Name="FirstName" Type="String" Nullable="false"
              MaxLength="50" Unicode="true" FixedLength="false" />
    <Property Name="HireDate" Type="DateTime" />
    <Property Name="EnrollmentDate" Type="DateTime" />
    <p:CustomElement>
      Custom metadata.
    </p:CustomElement>
  </EntityType>
</Schema>

다음 코드에서는 Annotation 요소의 메타데이터를 검색하여 콘솔에 작성합니다.

Dim collection As New EdmItemCollection("School.csdl")
Dim workspace As New MetadataWorkspace()
workspace.RegisterItemCollection(collection)
Dim contentType As EdmType
workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, contentType)
If contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomElement") Then
    Dim annotationProperty As MetadataProperty = _
        contentType.MetadataProperties("http://CustomNamespace.com:CustomElement")
    Dim annotationValue As Object = annotationProperty.Value
    Console.WriteLine(annotationValue.ToString())
End If
EdmItemCollection collection = new EdmItemCollection("School.csdl");
MetadataWorkspace workspace = new MetadataWorkspace();
workspace.RegisterItemCollection(collection);
EdmType contentType;
workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, out contentType);
if (contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomElement"))
{
    MetadataProperty annotationProperty =
        contentType.MetadataProperties["http://CustomNamespace.com:CustomElement"];
    object annotationValue = annotationProperty.Value;
    Console.WriteLine(annotationValue.ToString());
}

위의 코드에서는 School.csdl 파일이 프로젝트의 출력 디렉터리에 있고 다음 ImportsUsing 문을 프로젝트에 추가했다고 가정합니다.

Imports System.Data.Metadata.Edm
using System.Data.Metadata.Edm;

참고 항목

개념

주석 특성(CSDL)
CSDL 사양

기타 리소스

CSDL, SSDL 및 MSL 사양