次の方法で共有


annotation 属性 (CSDL)

概念スキーマ定義言語 (CSDL) の annotation 属性は、概念モデルのカスタム XML 属性です。 有効な XML 構造であることに加え、annotation 属性は次の条件を満たしている必要があります。

  • annotation 属性は、CSDL 用に予約された XML 名前空間に存在しない。

  • 複数の annotation 属性を特定の 1 つの CSDL 要素に適用することができる。

  • 2 つの任意の annotation 属性の完全修飾名が同じではない。

annotation 属性は、概念モデルの要素に関する追加のメタデータを提供するために使用できます。 annotation 要素に含まれるメタデータには、System.Data.Metadata.Edm 名前空間内のクラスを使用して実行時にアクセスできます。

次の例は、annotation 属性 (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>

次のコードは、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: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;

参照

概念

annotation 要素 (CSDL)
CSDL 仕様

その他のリソース

CSDL、SSDL、および MSL 仕様