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 파일이 프로젝트의 출력 디렉터리에 있고 다음 Imports
및 Using
문을 프로젝트에 추가했다고 가정합니다.
Imports System.Data.Metadata.Edm
using System.Data.Metadata.Edm;