Annotation 項目 (CSDL)

概念結構定義語言 (CSDL) 中的 Annotation 項目是概念模型中的自訂 XML 項目。除了擁有有效的 XML 結構外,下列 Annotation 項目的條件也必須成立:

  • Annotation 項目不能存在於保留供 CSDL 使用的任何 XML 命名空間中。

  • 多個 Annotation 項目可以同時為指定 CSDL 項目的子系。

  • 任兩個 Annotation 項目的完整名稱不能相同。

  • Annotation 項目必須出現在指定 CSDL 項目的所有其他子項目之後。

Annotation 項目可用來提供與概念模型中之項目有關的額外中繼資料。自 .NET Framework 第 4 版起,可以在執行階段使用 System.Data.Metadata.Edm 命名空間中的類別存取 Annotation 項目中包含的中繼資料。

範例

下列範例示範具有 Annotation 項目 (CustomElement) 的 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>

下列程式碼會擷取 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;

請參閱

概念

Annotation 屬性 (CSDL)

CSDL 規格

其他資源

CSDL、SSDL 和 MSL 規格