Compartir a través de


Elementos Annotation (CSDL)

Los elementos Annotation en el lenguaje de definición de esquemas conceptuales (CSDL) son los elementos XML personalizados del modelo conceptual. Además de tener una estructura XML válida, lo siguiente debe ser verdadero para los elementos Annotation:

  • Los elementos Annotation no deben estar en un espacio de nombres XML que esté reservado para CSDL.

  • Más de un elemento Annotation puede ser un elemento secundario de un elemento CSDL determinado.

  • Los nombres completos de dos elementos Annotation cualesquiera no deben ser los mismos.

  • Los elementos Annotation deben aparecer después de todos los demás elementos secundarios de un elemento CSDL determinado.

Los elementos Annotation pueden utilizarse para proporcionar metadatos adicionales sobre los elementos en un modelo conceptual. A partir de .NET Framework versión 4, se puede tener acceso a los metadatos contenidos en elementos Annotation en el motor en tiempo de ejecución por medio de las clases del espacio de nombres System.Data.Metadata.Edm.

Ejemplo

En el ejemplo siguiente se muestra un elemento EntityType con un elemento Annotation (CustomElement). El ejemplo también muestra un atributo de anotación aplicado al elemento de tipo de entidad. Para obtener más información, vea Atributos de anotación (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>

El siguiente código recupera los metadatos del elemento de anotación y los escribe en la consola:

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

El código anterior supone que el archivo School.csdl está en el directorio de resultados del proyecto y que se han agregado las siguientes instrucciones Imports y Using al proyecto:

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

Vea también

Conceptos

Atributos de anotación (CSDL)
Especificación CSDL

Otros recursos

Especificaciones CSDL, SSDL y MSL