주석 특성(CSDL)
CSDL(개념 스키마 정의 언어)의 주석 특성은 개념적 모델의 사용자 지정 XML 특성입니다. 주석 특성은 올바른 XML 구조를 가져야 함은 물론 다음 조건을 충족해야 합니다.
주석 특성은 CSDL용으로 예약된 XML 네임스페이스에 속하지 않아야 합니다.
두 개 이상의 주석 특성을 제공된 CSDL 요소에 적용할 수 있습니다.
두 주석 특성의 정규화된 이름은 서로 같을 수 없습니다.
주석 특성을 사용하여 개념적 모델의 요소에 대한 추가 메타데이터를 제공할 수 있습니다. Annotation 요소에 포함된 메타데이터는 런타임에 System.Data.Metadata.Edm 네임스페이스의 클래스를 사용하여 액세스할 수 있습니다.
예제
다음 예제에서는 주석 특성(CustomAttribute)이 포함된 EntityType 요소를 보여 줍니다. 이 예제에서는 엔터티 형식 요소에 적용된 Annotation 요소도 보여 줍니다. 자세한 내용은 Annotation 요소(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>
다음 코드에서는 주석 특성의 메타데이터를 검색하여 콘솔에 씁니다.
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:CustomAttribute") Then
Dim annotationProperty As MetadataProperty = _
contentType.MetadataProperties("http://CustomNamespace.com:CustomAttribute")
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:CustomAttribute"))
{
MetadataProperty annotationProperty =
contentType.MetadataProperties["http://CustomNamespace.com:CustomAttribute"];
object annotationValue = annotationProperty.Value;
Console.WriteLine(annotationValue.ToString());
}
이 코드에서는 School.csdl
파일이 프로젝트의 출력 디렉터리에 있고 프로젝트에 다음의 Imports
및 Using
문을 추가했다고 가정합니다.
Imports System.Data.Metadata.Edm
using System.Data.Metadata.Edm;