Elementi Annotation (CSDL)

Gli elementi Annotation in Conceptual Schema Definition Language (CSDL) sono elementi XML personalizzati nel modello concettuale. Oltre ad avere una struttura XML valida, gli elementi Annotation hanno le caratteristiche seguenti:

  • Gli elementi Annotation non devono trovarsi in spazi dei nomi XML riservati a CSDL.

  • Più elementi Annotation possono essere figli di un dato elemento CSDL.

  • I nomi completi di due elementi Annotation non devono essere uguali.

  • Gli elementi Annotation devono apparire dopo tutti gli altri elementi figlio di un dato elemento CSDL.

Gli elementi Annotation possono essere utilizzati per fornire metadati aggiuntivi sugli elementi in un modello concettuale. A partire da .NET Framework versione 4, è possibile accedere ai metadata contenuti in elementi Annotation in fase di runtime tramite l'utilizzo di classi nello spazio dei nomi System.Data.Metadata.Edm.

Esempio

Nell'esempio seguente viene mostrato un elemento EntityType con un elemento Annotation (CustomElement). Nell'esempio viene inoltre mostrato un attributo di annotazione applicato all'elemento del tipo di entità. Per ulteriori informazioni, vedere Attributi di annotazione (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>

Il codice seguente recupera i metadati dell'elemento Annotation e li scrive nella console:

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());
}

Nel codice riportato in precedenza si presuppone che il file School.csdl si trovi nella directory di output del progetto e che al progetto siano state aggiunte le istruzioni Imports e Using seguenti:

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

Vedere anche

Concetti

Attributi di annotazione (CSDL)
Specifiche CSDL

Altre risorse

Specifiche CSDL, SSDL e MSL